From 77d8964aa5831656b169c89db149140ee91fb60b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 5 Jul 2023 11:55:55 +0200 Subject: [PATCH 001/121] thread cloud backup --- packages/helpermodules/system.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/helpermodules/system.py b/packages/helpermodules/system.py index 47aa8e43ea..24380d6068 100644 --- a/packages/helpermodules/system.py +++ b/packages/helpermodules/system.py @@ -3,6 +3,7 @@ import logging import os import subprocess +import threading import time from pathlib import Path from typing import Optional @@ -76,15 +77,22 @@ def update_ip_address(self) -> None: pub.Pub().pub("openWB/set/system/ip_address", new_ip) def create_backup_and_send_to_cloud(self): - try: - if self.backup_cloud is not None: - backup_filename = self.create_backup() - with open(self._get_parent_file()/'data'/'backup'/backup_filename, 'rb') as f: - data = f.read() - self.backup_cloud.update(backup_filename, data) - log.debug('Nächtliche Sicherung erstellt und hochgeladen.') - except Exception as e: - raise e + def create(): + try: + if self.backup_cloud is not None: + backup_filename = self.create_backup() + with open(self._get_parent_file()/'data'/'backup'/backup_filename, 'rb') as f: + data = f.read() + self.backup_cloud.update(backup_filename, data) + log.debug('Nächtliche Sicherung erstellt und hochgeladen.') + except Exception as e: + raise e + + for thread in threading.enumerate(): + if thread.name == "cloud backup": + log.debug("Don't start multiple instances of cloud backup thread.") + return + threading.Thread(target=create, args=(), name="cloud backup").start() def create_backup(self) -> str: result = subprocess.run([str(self._get_parent_file() / "runs" / "backup.sh"), "1"], stdout=subprocess.PIPE) From b691c0a3fdf00fadb635952b337f1bc47ac712cb Mon Sep 17 00:00:00 2001 From: okaegi Date: Wed, 19 Jul 2023 07:18:31 +0200 Subject: [PATCH 002/121] idm....mit PV Leistung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neu wird IDM die aktuelle PV Leistung zusätzlich übergeben, Die PV Leistung ist für Smarthome nicht steuernd. Der idm treiber wurde vereinfacht. der Branch kann auch für openwb 2.0 übernommen werden, in mainloop wird die PV Leistung mit 0 vorbelegt. Die nötige Änderung in openwb 2.0 kommt dann noch. --- packages/modules/smarthome/idm/off.py | 24 ++++--------- packages/modules/smarthome/idm/on.py | 24 ++++--------- packages/modules/smarthome/idm/smartidm.py | 5 ++- packages/modules/smarthome/idm/watt.py | 40 ++++++++++++++++------ packages/smarthome/smartbase.py | 1 + packages/smarthome/smartcommon.py | 13 +++---- 6 files changed, 53 insertions(+), 54 deletions(-) diff --git a/packages/modules/smarthome/idm/off.py b/packages/modules/smarthome/idm/off.py index 5143babae8..14baa3f133 100644 --- a/packages/modules/smarthome/idm/off.py +++ b/packages/modules/smarthome/idm/off.py @@ -1,36 +1,21 @@ #!/usr/bin/python3 import sys import os -import struct -from pymodbus.client.sync import ModbusTcpClient import logging from smarthome.smartlog import initlog devicenumber = int(sys.argv[1]) ipadr = str(sys.argv[2]) uberschuss = int(sys.argv[3]) -try: - navvers = str(sys.argv[4]) -except Exception: - navvers = "2" +navvers = str(sys.argv[4]) bp = '/var/www/html/openWB/ramdisk/smarthome_device_' # standard file_stringpv = bp + str(devicenumber) + '_pv' file_stringcount = bp + str(devicenumber) + '_count' +file_stringcount5 = bp + str(devicenumber) + '_count5' initlog("idm", devicenumber) log = logging.getLogger("idm") -log.info(" devicenr %d ipadr %s ueberschuss %6d try to connect (modbus)" +log.info(" off.py devicenr %d ipadr %s ueberschuss %6d " % (devicenumber, ipadr, uberschuss)) -client = ModbusTcpClient(ipadr, port=502) -start = 4122 -if navvers == "2": - rr = client.read_input_registers(start, 2, unit=1) -else: - rr = client.read_holding_registers(start, 2, unit=1) -raw = struct.pack('>HH', rr.getRegister(1), rr.getRegister(0)) -lkw = float(struct.unpack('>f', raw)[0]) -aktpower = int(lkw*1000) -log.info(" devicenr %d ipadr %s Akt Leistung %6d" - % (devicenumber, ipadr, aktpower)) pvmodus = 0 if os.path.isfile(file_stringpv): with open(file_stringpv, 'r') as f: @@ -44,3 +29,6 @@ count1 = 999 with open(file_stringcount, 'w') as f: f.write(str(count1)) +count5 = 999 +with open(file_stringcount5, 'w') as f: + f.write(str(count5)) diff --git a/packages/modules/smarthome/idm/on.py b/packages/modules/smarthome/idm/on.py index be71b9803a..9e30fd2c36 100644 --- a/packages/modules/smarthome/idm/on.py +++ b/packages/modules/smarthome/idm/on.py @@ -1,17 +1,12 @@ #!/usr/bin/python3 import sys -import struct -from pymodbus.client.sync import ModbusTcpClient import logging from smarthome.smartlog import initlog devicenumber = int(sys.argv[1]) ipadr = str(sys.argv[2]) uberschuss = int(sys.argv[3]) bp = '/var/www/html/openWB/ramdisk/smarthome_device_' -try: - navvers = str(sys.argv[4]) -except Exception: - navvers = "2" +navvers = str(sys.argv[4]) initlog("idm", devicenumber) log = logging.getLogger("idm") # standard @@ -19,21 +14,14 @@ # own log file_stringpv = bp + str(devicenumber) + '_pv' file_stringcount = bp + str(devicenumber) + '_count' -log.info("devicenr %d ipadr %s ueberschuss %6d try to connect (modbus)" +file_stringcount5 = bp + str(devicenumber) + '_count5' +log.info("on.py devicenr %d ipadr %s ueberschuss %6d" % (devicenumber, ipadr, uberschuss)) -client = ModbusTcpClient(ipadr, port=502) -start = 4122 -if navvers == "2": - rr = client.read_input_registers(start, 2, unit=1) -else: - rr = client.read_holding_registers(start, 2, unit=1) -raw = struct.pack('>HH', rr.getRegister(1), rr.getRegister(0)) -lkw = float(struct.unpack('>f', raw)[0]) -aktpower = int(lkw*1000) -log.info("devicenr %d ipadr %s Akt Leistung %6d " % - (devicenumber, ipadr, aktpower)) with open(file_stringpv, 'w') as f: f.write(str(1)) count1 = 999 with open(file_stringcount, 'w') as f: f.write(str(count1)) +count5 = 999 +with open(file_stringcount5, 'w') as f: + f.write(str(count5)) diff --git a/packages/modules/smarthome/idm/smartidm.py b/packages/modules/smarthome/idm/smartidm.py index 2d3d259418..643e70b61c 100644 --- a/packages/modules/smarthome/idm/smartidm.py +++ b/packages/modules/smarthome/idm/smartidm.py @@ -29,15 +29,18 @@ def updatepar(self, input_param: Dict[str, str]) -> None: def getwatt(self, uberschuss: int, uberschussoffset: int) -> None: self.prewatt(uberschuss, uberschussoffset) + forcesend = self.checkbefsend() argumentList = ['python3', self._prefixpy + 'idm/watt.py', str(self.device_nummer), str(self._device_ip), - str(self.devuberschuss), str(self._device_idmnav)] + str(self.devuberschuss), str(self._device_idmnav), + str(self.pvwatt), str(forcesend)] try: self.callpro(argumentList) self.answer = self.readret() self.newwatt = int(self.answer['power']) self.newwattk = int(self.answer['powerc']) self.relais = int(self.answer['on']) + self.checksend(self.answer) except Exception as e1: log.warning("(" + str(self.device_nummer) + ") Leistungsmessung %s %d %s Fehlermeldung: %s " diff --git a/packages/modules/smarthome/idm/watt.py b/packages/modules/smarthome/idm/watt.py index 2e001a7537..e5610f49b4 100644 --- a/packages/modules/smarthome/idm/watt.py +++ b/packages/modules/smarthome/idm/watt.py @@ -1,7 +1,6 @@ #!/usr/bin/python3 import sys import os -import time import struct import logging from pymodbus.constants import Endian @@ -9,14 +8,15 @@ from pymodbus.client.sync import ModbusTcpClient from smarthome.smartlog import initlog from smarthome.smartret import writeret -named_tuple = time.localtime() # getstruct_time devicenumber = int(sys.argv[1]) ipadr = str(sys.argv[2]) uberschuss = int(sys.argv[3]) -try: - navvers = str(sys.argv[4]) -except Exception: - navvers = "2" +navvers = str(sys.argv[4]) +pvwatt = int(sys.argv[5]) +forcesend = int(sys.argv[6]) +# forcesend = 0 default time period applies +# forcesend = 1 default overwritten send now +# forcesend = 9 default overwritten no send initlog("idm", devicenumber) log = logging.getLogger("idm") bp = '/var/www/html/openWB/ramdisk/smarthome_device_' @@ -27,7 +27,12 @@ if os.path.isfile(file_stringcount5): with open(file_stringcount5, 'r') as f: count5 = int(f.read()) -count5 = count5+1 +if (forcesend == 0): + count5 = count5 + 1 +elif (forcesend == 1): + count5 = 999 +else: + count5 = 1 if count5 > 6: count5 = 0 with open(file_stringcount5, 'w') as f: @@ -50,6 +55,10 @@ f.write(str(count1)) # aktuelle Leistung lesen client = ModbusTcpClient(ipadr, port=502) + # test + # start = 3501 + # navvers = "2" + # prod start = 4122 if navvers == "2": rr = client.read_input_registers(start, 2, unit=1) @@ -83,18 +92,27 @@ wordorder=Endian.Little) builder.add_32bit_float(lkwneu) regnew = builder.to_registers() + pvw = float(pvwatt) + pvw = pvw/1000 + builder = BinaryPayloadBuilder(byteorder=Endian.Big, + wordorder=Endian.Little) + builder.add_32bit_float(pvw) + pvwnew = builder.to_registers() # json return power = aktuelle Leistungsaufnahme in Watt, # on = 1 pvmodus, powerc = counter in kwh - an = '{"power":' + str(aktpower) + ',"powerc":0,"on":' + str(pvmodus) + '}' - writeret(an, devicenumber) + answer = '{"power":' + str(aktpower) + ',"powerc":0' + answer += ',"send":' + str(modbuswrite) + ',"sendpower":' + str(neupower) + answer += ',"on":' + str(pvmodus) + '}' + writeret(answer, devicenumber) if count1 < 3: - log.info(" %d ipadr %s ueberschuss %6d Akt Leistung %6d" - % (devicenumber, ipadr, uberschuss, aktpower)) + log.info(" %d ipadr %s ueberschuss %6d Akt Leistung %6d Pv %6d" + % (devicenumber, ipadr, uberschuss, aktpower, pvwatt)) log.info(" %d ipadr %s ueberschuss %6d pvmodus %1d modbusw %1d" % (devicenumber, ipadr, neupower, pvmodus, modbuswrite)) # modbus write if modbuswrite == 1: client.write_registers(74, regnew, unit=1) + client.write_registers(78, pvwnew, unit=1) if count1 < 3: log.info("devicenr %d ipadr %s device written by modbus " % (devicenumber, ipadr)) diff --git a/packages/smarthome/smartbase.py b/packages/smarthome/smartbase.py index a7e66124bc..5925a24cd3 100644 --- a/packages/smarthome/smartbase.py +++ b/packages/smarthome/smartbase.py @@ -43,6 +43,7 @@ def __init__(self) -> None: self.temp2 = '300' self.newwatt = 0 self.newwattk = 0 + self.pvwatt = 0 self.relais = 0 self.devuberschuss = 0 self.device_temperatur_configured = 0 diff --git a/packages/smarthome/smartcommon.py b/packages/smarthome/smartcommon.py index 1cba49f9b1..50a27c99d7 100644 --- a/packages/smarthome/smartcommon.py +++ b/packages/smarthome/smartcommon.py @@ -110,7 +110,7 @@ def on_message(client, userdata, msg) -> None: log.warning(" Skipped msg " + msg.topic + " Value " + value) -def getdevicevalues(uberschuss: int, uberschussoffset: int) -> None: +def getdevicevalues(uberschuss: int, uberschussoffset: int, pvwatt: int) -> None: global mydevices totalwatt = 0 totalwattot = 0 @@ -121,6 +121,7 @@ def getdevicevalues(uberschuss: int, uberschussoffset: int) -> None: Sbase.eindevstatus = 0 mqtt_all = {} for mydevice in mydevices: + mydevice.pvwatt = pvwatt mydevice.getwatt(uberschuss, uberschussoffset) watt = mydevice.newwatt wattk = mydevice.newwattk @@ -389,7 +390,7 @@ def resetmaxeinschaltdauerfunc() -> None: resetmaxeinschaltdauer = 0 -def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int) -> Tuple[int, int]: +def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int,pvwatt: int) -> Tuple[int, int]: global maxspeicher global mydevices uberschuss = wattbezug + speicherleistung @@ -397,7 +398,7 @@ def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int) -> Tu log.info("EVU Bezug(-)/Einspeisung(+): " + str(wattbezug) + " max Speicherladung: " + str(maxspeicher)) log.info("Uberschuss: " + str(uberschuss) + - " Uberschuss mit Offset: " + str(uberschussoffset)) + " Uberschuss mit Offset: " + str(uberschussoffset) + " Pv: " + str(pvwatt)) log.info("Speicher Entladung(-)/Ladung(+): " + str(speicherleistung) + " SpeicherSoC: " + str(speichersoc)) reread = 0 @@ -448,16 +449,16 @@ def initparam(inpcg: str, inpcs: str, inpsdevstat: str, inpsglobstat: str, inpto mqttport = inpport -def mainloop(wattbezug: int, speicherleistung: int, speichersoc: int) -> None: +def mainloop(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: int = 0) -> None: global firststart if firststart: readmq() firststart = False mqtt_man = {} sendmess = 0 - uberschuss, uberschussoffset = loadregelvars(wattbezug, speicherleistung, speichersoc) + uberschuss, uberschussoffset = loadregelvars(wattbezug, speicherleistung, speichersoc, pvwatt) resetmaxeinschaltdauerfunc() - getdevicevalues(uberschuss, uberschussoffset) + getdevicevalues(uberschuss, uberschussoffset, pvwatt) conditions(speichersoc) # do the manual stuff for i in range(1, (numberOfSupportedDevices+1)): From c8eb692c91922cd2bf4ac1aa9e022b110d3dcc34 Mon Sep 17 00:00:00 2001 From: okaegi Date: Wed, 19 Jul 2023 07:24:55 +0200 Subject: [PATCH 003/121] flake8... --- packages/modules/smarthome/idm/smartidm.py | 2 +- packages/smarthome/smartcommon.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modules/smarthome/idm/smartidm.py b/packages/modules/smarthome/idm/smartidm.py index 643e70b61c..dc6afd3349 100644 --- a/packages/modules/smarthome/idm/smartidm.py +++ b/packages/modules/smarthome/idm/smartidm.py @@ -29,7 +29,7 @@ def updatepar(self, input_param: Dict[str, str]) -> None: def getwatt(self, uberschuss: int, uberschussoffset: int) -> None: self.prewatt(uberschuss, uberschussoffset) - forcesend = self.checkbefsend() + forcesend = self.checkbefsend() argumentList = ['python3', self._prefixpy + 'idm/watt.py', str(self.device_nummer), str(self._device_ip), str(self.devuberschuss), str(self._device_idmnav), diff --git a/packages/smarthome/smartcommon.py b/packages/smarthome/smartcommon.py index 50a27c99d7..1eacf598b3 100644 --- a/packages/smarthome/smartcommon.py +++ b/packages/smarthome/smartcommon.py @@ -390,7 +390,7 @@ def resetmaxeinschaltdauerfunc() -> None: resetmaxeinschaltdauer = 0 -def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int,pvwatt: int) -> Tuple[int, int]: +def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: int) -> Tuple[int, int]: global maxspeicher global mydevices uberschuss = wattbezug + speicherleistung From 0819c83870965de81ca90fcf0c9bf879fa9e5b20 Mon Sep 17 00:00:00 2001 From: okaegi Date: Wed, 19 Jul 2023 07:52:20 +0200 Subject: [PATCH 004/121] watt.py --- packages/modules/smarthome/idm/watt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/modules/smarthome/idm/watt.py b/packages/modules/smarthome/idm/watt.py index e5610f49b4..52004b5302 100644 --- a/packages/modules/smarthome/idm/watt.py +++ b/packages/modules/smarthome/idm/watt.py @@ -84,6 +84,7 @@ modbuswrite = 1 neupower = 0 pvmodus = 0 + pvwatt = 0 with open(file_stringpv, 'w') as f: f.write(str(pvmodus)) lkwneu = float(neupower) From b306d7aafdcf33051cc6cf641ff3655743c612a3 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 19 Jul 2023 13:32:19 +0200 Subject: [PATCH 005/121] draft --- packages/control/conftest.py | 14 +++++ packages/control/counter_all.py | 52 +++++++++++++++++- packages/control/hierarchy_test.py | 66 ++++++++++++++++++++++- packages/main.py | 1 + packages/modules/common/component_type.py | 11 ++++ 5 files changed, 142 insertions(+), 2 deletions(-) diff --git a/packages/control/conftest.py b/packages/control/conftest.py index f6e1050414..ad8675c089 100644 --- a/packages/control/conftest.py +++ b/packages/control/conftest.py @@ -14,6 +14,7 @@ from control.counter_all import CounterAll from control.pv import Pv, PvData from control.pv import Get as PvGet +from helpermodules.subdata import SubData def hierarchy_standard() -> CounterAll: @@ -113,3 +114,16 @@ def data_() -> None: spec=CounterGet, currents=[25, 10, 25], power=13800, daily_imported=20000, daily_exported=0), config=Mock(spec=CounterConfig, max_currents=[32]*3), set=Mock(spec=CounterSet, raw_currents_left=[31]*3)))}) + + +@pytest.fixture() +def subdata_() -> None: + SubData.cp_data = { + "cp3": Mock(spec=Chargepoint), + "cp4": Mock(spec=Chargepoint), + "cp5": Mock(spec=Chargepoint)} + SubData.bat_data.update({"bat2": Mock(spec=Bat)}) + SubData.pv_data.update({"pv1": Mock(spec=Pv)}) + SubData.counter_data.update({ + "counter0": Mock(spec=Counter), + "counter6": Mock(spec=Counter)}) diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py index afb841a655..874a1c076f 100644 --- a/packages/control/counter_all.py +++ b/packages/control/counter_all.py @@ -3,13 +3,16 @@ import copy from dataclasses import dataclass, field import logging +import re from typing import Callable, Dict, List, Tuple, Union from control import data from control.counter import Counter from dataclass_utils.factories import empty_list_factory +from helpermodules.messaging import MessageType, pub_system_message from helpermodules.pub import Pub -from modules.common.component_type import ComponentType +from helpermodules.subdata import SubData +from modules.common.component_type import ComponentType, component_type_to_readable_text from modules.common.fault_state import FaultStateLevel log = logging.getLogger(__name__) @@ -392,6 +395,53 @@ def _get_list_of_elements_per_level(self, elements_per_level: List, child: Dict, elements_per_level = self._get_list_of_elements_per_level(elements_per_level, child, index+1) return elements_per_level + def validate_hierarchy(self): + self._delete_obsolete_entries() + self._add_missing_entries() + Pub().pub("openWB/set/counter/get/hierarchy", self.data.get.hierarchy) + + def _delete_obsolete_entries(self): + def check_and_remove(name, type_name: ComponentType, data_structure): + if element["type"] == type_name.value: + if f"{name}{element['id']}" not in data_structure: + self.hierarchy_remove_item(element["id"]) + pub_system_message({}, f"{component_type_to_readable_text(type_name)} mit ID {element['id']} wurde" + " aus der Hierachie entfernt, da keine gültige Konfiguration gefunden wurde.", + MessageType.WARNING) + + for level in self.get_list_of_elements_per_level(): + for element in level: + check_and_remove("bat", ComponentType.BAT, SubData.bat_data) + check_and_remove("counter", ComponentType.COUNTER, SubData.counter_data) + check_and_remove("cp", ComponentType.CHARGEPOINT, SubData.cp_data) + check_and_remove("pv", ComponentType.INVERTER, SubData.pv_data) + + def _add_missing_entries(self): + def check_and_add(type_name: ComponentType, data_structure): + for entry in data_structure: + break_flag = False + re_result = re.search("[0-9]+", entry) + if re_result is not None: + entry_num = int(re_result.group()) + for level in self.get_list_of_elements_per_level(): + for element in level: + if entry_num == element["id"] and element["type"] == type_name.value: + break_flag = True + break + if break_flag: + break + else: + self.hierarchy_add_item_below(entry_num, type_name, self.get_evu_counter()) + pub_system_message({}, f"{component_type_to_readable_text(type_name)} mit ID {element['id']} wurde" + " in der Hierachie hinzugefügt, da kein Eintrag in der Hierachie gefunden " + "wurde. Bitte prüfe die Anordnung der Komponenten in der Hierachie.", + MessageType.WARNING) + + check_and_add(ComponentType.BAT, SubData.bat_data) + check_and_add(ComponentType.COUNTER, SubData.counter_data) + check_and_add(ComponentType.CHARGEPOINT, SubData.cp_data) + check_and_add(ComponentType.INVERTER, SubData.pv_data) + def get_max_id_in_hierarchy(current_entry: List, max_id: int) -> int: for item in current_entry: diff --git a/packages/control/hierarchy_test.py b/packages/control/hierarchy_test.py index cec194b2ca..d80dbfebb6 100644 --- a/packages/control/hierarchy_test.py +++ b/packages/control/hierarchy_test.py @@ -1,6 +1,7 @@ from typing import Dict, List, Optional, Union +from unittest.mock import Mock import pytest -from control.conftest import hierarchy_hybrid +from control.conftest import hierarchy_hybrid, hierarchy_nested from control.counter_all import CounterAll, get_max_id_in_hierarchy @@ -289,3 +290,66 @@ def test_list_of_elements_per_level(params: ParamsItem): # evaluation assert actual == params.expected_return + + +@pytest.mark.parametrize("hierarchy", + [pytest.param(hierarchy_nested().data.get.hierarchy, id="nothing to delete"), + pytest.param([{"id": 0, "type": "counter", + "children": [ + {"id": 3, "type": "cp", "children": []}, + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}, + {"id": 8, "type": "cp", "children": []}]}, + {"id": 1, "type": "inverter", "children": []}, + {"id": 2, "type": "bat", "children": []}]}], id="delete cp 8") + ] + ) +def test_delete_obsolete_entries(hierarchy, data_): + # setup + counter_all = CounterAll() + counter_all.data.get.hierarchy = hierarchy + + # execution + counter_all._delete_obsolete_entries() + + # evaluation + assert counter_all.data.get.hierarchy == hierarchy_nested().data.get.hierarchy + + +@pytest.mark.parametrize("hierarchy, expected_hierarchy", + [pytest.param(hierarchy_nested().data.get.hierarchy, hierarchy_nested().data.get.hierarchy, + id="nothing to add"), + pytest.param([{"id": 0, "type": "counter", + "children": [ + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}]}, + {"id": 1, "type": "inverter", "children": []}, + {"id": 2, "type": "bat", "children": []}]}], + [{"id": 0, "type": "counter", + "children": [ + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}]}, + {"id": 1, "type": "inverter", "children": []}, + {"id": 2, "type": "bat", "children": []}, + {"id": 3, "type": "cp", "children": []}, + ]}], id="add cp3") + ] + ) +def test_add_missing_entries(hierarchy, expected_hierarchy, subdata_, monkeypatch): + # setup + counter_all = CounterAll() + counter_all.data.get.hierarchy = hierarchy + mock_get_evu_counter = Mock(return_value=0) + monkeypatch.setattr(CounterAll, "get_evu_counter", mock_get_evu_counter) + + # execution + counter_all._add_missing_entries() + + # evaluation + assert counter_all.data.get.hierarchy == expected_hierarchy diff --git a/packages/main.py b/packages/main.py index 53306a8233..21274c6a68 100755 --- a/packages/main.py +++ b/packages/main.py @@ -219,6 +219,7 @@ def schedule_jobs(): t_internal_chargepoint.start() # Warten, damit subdata Zeit hat, alle Topics auf dem Broker zu empfangen. time.sleep(5) + sub.counter_all_data.validate_hierarchy() schedule_jobs() except Exception: log.exception("Fehler im Main-Modul") diff --git a/packages/modules/common/component_type.py b/packages/modules/common/component_type.py index d7af47e87d..770fbe11d2 100644 --- a/packages/modules/common/component_type.py +++ b/packages/modules/common/component_type.py @@ -46,6 +46,17 @@ def type_topic_mapping_comp(component_type: str) -> str: raise Exception("Unbekannter Komponenten-Typ: " + component_type) +def component_type_to_readable_text(component_type: ComponentType): + if component_type == ComponentType.BAT: + return "Speicher" + elif component_type == ComponentType.COUNTER: + return "Zähler" + elif component_type == ComponentType.CHARGEPOINT: + return "Ladepunkt" + elif component_type == ComponentType.INVERTER: + return "Wechselrichter" + + class ComponentDescriptor: def __init__(self, configuration_factory: Type): self.configuration_factory = configuration_factory From ce6f2ced58362f17362710fd2461b1bfdd372dda Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Tue, 25 Jul 2023 13:47:16 +0200 Subject: [PATCH 006/121] Bump version 1.9.302 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index a880170e51..b08e1b5e84 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -1.9.301.1 +1.9.302.0 From fe107d2db61def9e85183f06dc460e98916c77ac Mon Sep 17 00:00:00 2001 From: okaegi Date: Tue, 25 Jul 2023 14:54:42 +0200 Subject: [PATCH 007/121] =?UTF-8?q?pv=20Leistung=20f=C3=BCr=201.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PV Leistung für openwb 1.9 --- runs/smarthomemq.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/runs/smarthomemq.py b/runs/smarthomemq.py index 63821d1dd1..debc185d6f 100755 --- a/runs/smarthomemq.py +++ b/runs/smarthomemq.py @@ -99,5 +99,12 @@ def checkbootdone() -> int: log.warning("Fehler beim Auslesen der Ramdisk (wattbezug):" + str(e)) wattbezug = 0 - mainloop(wattbezug, speicherleistung, speichersoc) + try: + with open(bp+'/ramdisk/pvallwatt', 'r') as value: + pvwatt = int(float(value.read())) * -1 + except Exception as e: + log.warning("Fehler beim Auslesen der Ramdisk (pvallwatt):" + + str(e)) + pvwatt = 0 + mainloop(wattbezug, speicherleistung, speichersoc, pvwatt) time.sleep(5) From 4c23607ffbc1b498b9d9bdf17d93b8c7b1f8ce82 Mon Sep 17 00:00:00 2001 From: okaegi Date: Tue, 25 Jul 2023 15:03:49 +0200 Subject: [PATCH 008/121] =?UTF-8?q?pv=20Leistung=20f=C3=BCr=20Openwb=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/smarthome/smarthome.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/smarthome/smarthome.py b/packages/smarthome/smarthome.py index ff4908dab2..95052a2635 100644 --- a/packages/smarthome/smarthome.py +++ b/packages/smarthome/smarthome.py @@ -42,7 +42,8 @@ def handler() -> None: speichersoc = 100 watt = SubData.counter_data[f"counter{SubData.counter_all_data.get_id_evu_counter()}"].data.get.power * -1 wattint = int(watt) - mainloop(wattint, speicherleistung, speichersoc) + pvwatt = int(SubData.pv_all_data.data.get.power) * -1 + mainloop(wattint, speicherleistung, speichersoc, pvwatt) except Exception: log.exception("Fehler im Smarthome-Handler") # run as thread for logging reasons From a8ac141f57c1eae2f4d6e3541be1454fc438f6de Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Jul 2023 12:15:52 +0200 Subject: [PATCH 009/121] fix --- packages/control/conftest.py | 14 ----------- packages/control/counter_all.py | 26 ++++++++++---------- packages/control/hierarchy_test.py | 38 ++++++++++++++++++++++++++---- packages/main.py | 4 ++-- 4 files changed, 48 insertions(+), 34 deletions(-) diff --git a/packages/control/conftest.py b/packages/control/conftest.py index ad8675c089..f6e1050414 100644 --- a/packages/control/conftest.py +++ b/packages/control/conftest.py @@ -14,7 +14,6 @@ from control.counter_all import CounterAll from control.pv import Pv, PvData from control.pv import Get as PvGet -from helpermodules.subdata import SubData def hierarchy_standard() -> CounterAll: @@ -114,16 +113,3 @@ def data_() -> None: spec=CounterGet, currents=[25, 10, 25], power=13800, daily_imported=20000, daily_exported=0), config=Mock(spec=CounterConfig, max_currents=[32]*3), set=Mock(spec=CounterSet, raw_currents_left=[31]*3)))}) - - -@pytest.fixture() -def subdata_() -> None: - SubData.cp_data = { - "cp3": Mock(spec=Chargepoint), - "cp4": Mock(spec=Chargepoint), - "cp5": Mock(spec=Chargepoint)} - SubData.bat_data.update({"bat2": Mock(spec=Bat)}) - SubData.pv_data.update({"pv1": Mock(spec=Pv)}) - SubData.counter_data.update({ - "counter0": Mock(spec=Counter), - "counter6": Mock(spec=Counter)}) diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py index 874a1c076f..5fa8c7c436 100644 --- a/packages/control/counter_all.py +++ b/packages/control/counter_all.py @@ -11,7 +11,6 @@ from dataclass_utils.factories import empty_list_factory from helpermodules.messaging import MessageType, pub_system_message from helpermodules.pub import Pub -from helpermodules.subdata import SubData from modules.common.component_type import ComponentType, component_type_to_readable_text from modules.common.fault_state import FaultStateLevel @@ -398,7 +397,6 @@ def _get_list_of_elements_per_level(self, elements_per_level: List, child: Dict, def validate_hierarchy(self): self._delete_obsolete_entries() self._add_missing_entries() - Pub().pub("openWB/set/counter/get/hierarchy", self.data.get.hierarchy) def _delete_obsolete_entries(self): def check_and_remove(name, type_name: ComponentType, data_structure): @@ -406,15 +404,15 @@ def check_and_remove(name, type_name: ComponentType, data_structure): if f"{name}{element['id']}" not in data_structure: self.hierarchy_remove_item(element["id"]) pub_system_message({}, f"{component_type_to_readable_text(type_name)} mit ID {element['id']} wurde" - " aus der Hierachie entfernt, da keine gültige Konfiguration gefunden wurde.", + " aus der Hierarchie entfernt, da keine gültige Konfiguration gefunden wurde.", MessageType.WARNING) for level in self.get_list_of_elements_per_level(): for element in level: - check_and_remove("bat", ComponentType.BAT, SubData.bat_data) - check_and_remove("counter", ComponentType.COUNTER, SubData.counter_data) - check_and_remove("cp", ComponentType.CHARGEPOINT, SubData.cp_data) - check_and_remove("pv", ComponentType.INVERTER, SubData.pv_data) + check_and_remove("bat", ComponentType.BAT, data.data.bat_data) + check_and_remove("counter", ComponentType.COUNTER, data.data.counter_data) + check_and_remove("cp", ComponentType.CHARGEPOINT, data.data.cp_data) + check_and_remove("pv", ComponentType.INVERTER, data.data.pv_data) def _add_missing_entries(self): def check_and_add(type_name: ComponentType, data_structure): @@ -431,16 +429,16 @@ def check_and_add(type_name: ComponentType, data_structure): if break_flag: break else: - self.hierarchy_add_item_below(entry_num, type_name, self.get_evu_counter()) + self.hierarchy_add_item_below(entry_num, type_name, self.get_evu_counter().num) pub_system_message({}, f"{component_type_to_readable_text(type_name)} mit ID {element['id']} wurde" - " in der Hierachie hinzugefügt, da kein Eintrag in der Hierachie gefunden " - "wurde. Bitte prüfe die Anordnung der Komponenten in der Hierachie.", + " in der Hierarchie hinzugefügt, da kein Eintrag in der Hierarchie gefunden " + "wurde. Bitte prüfe die Anordnung der Komponenten in der Hierarchie.", MessageType.WARNING) - check_and_add(ComponentType.BAT, SubData.bat_data) - check_and_add(ComponentType.COUNTER, SubData.counter_data) - check_and_add(ComponentType.CHARGEPOINT, SubData.cp_data) - check_and_add(ComponentType.INVERTER, SubData.pv_data) + check_and_add(ComponentType.BAT, data.data.bat_data) + check_and_add(ComponentType.COUNTER, data.data.counter_data) + check_and_add(ComponentType.CHARGEPOINT, data.data.cp_data) + check_and_add(ComponentType.INVERTER, data.data.pv_data) def get_max_id_in_hierarchy(current_entry: List, max_id: int) -> int: diff --git a/packages/control/hierarchy_test.py b/packages/control/hierarchy_test.py index d80dbfebb6..1b3a3ed417 100644 --- a/packages/control/hierarchy_test.py +++ b/packages/control/hierarchy_test.py @@ -2,6 +2,7 @@ from unittest.mock import Mock import pytest from control.conftest import hierarchy_hybrid, hierarchy_nested +from control.counter import Counter from control.counter_all import CounterAll, get_max_id_in_hierarchy @@ -303,7 +304,17 @@ def test_list_of_elements_per_level(params: ParamsItem): {"id": 5, "type": "cp", "children": []}, {"id": 8, "type": "cp", "children": []}]}, {"id": 1, "type": "inverter", "children": []}, - {"id": 2, "type": "bat", "children": []}]}], id="delete cp 8") + {"id": 2, "type": "bat", "children": []}]}], id="delete cp 8"), + pytest.param([{"id": 0, "type": "counter", + "children": [ + {"id": 3, "type": "cp", "children": []}, + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}, + {"id": 8, "type": "inverter", "children": []}]}, + {"id": 1, "type": "inverter", "children": []}, + {"id": 2, "type": "bat", "children": []}]}], id="delete inverter 8") ] ) def test_delete_obsolete_entries(hierarchy, data_): @@ -338,14 +349,33 @@ def test_delete_obsolete_entries(hierarchy, data_): {"id": 1, "type": "inverter", "children": []}, {"id": 2, "type": "bat", "children": []}, {"id": 3, "type": "cp", "children": []}, - ]}], id="add cp3") + ]}], id="add cp3"), + pytest.param([{"id": 0, "type": "counter", + "children": [ + {"id": 3, "type": "cp", "children": []}, + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}]}, + {"id": 2, "type": "bat", "children": []}]}], + [{"id": 0, "type": "counter", + "children": [ + {"id": 3, "type": "cp", "children": []}, + {"id": 6, "type": "counter", + "children": [ + {"id": 4, "type": "cp", "children": []}, + {"id": 5, "type": "cp", "children": []}]}, + {"id": 2, "type": "bat", "children": []}, + {"id": 1, "type": "inverter", "children": []} + ]}], id="add inverter 1") ] ) -def test_add_missing_entries(hierarchy, expected_hierarchy, subdata_, monkeypatch): +def test_add_missing_entries(hierarchy, expected_hierarchy, data_, monkeypatch): # setup counter_all = CounterAll() counter_all.data.get.hierarchy = hierarchy - mock_get_evu_counter = Mock(return_value=0) + c = Mock(spec=Counter, num=0) + mock_get_evu_counter = Mock(return_value=c) monkeypatch.setattr(CounterAll, "get_evu_counter", mock_get_evu_counter) # execution diff --git a/packages/main.py b/packages/main.py index 21274c6a68..147f73459f 100755 --- a/packages/main.py +++ b/packages/main.py @@ -78,6 +78,7 @@ def handler5MinAlgorithm(self): measurement_log.measurement_log_daily() data.data.general_data.grid_protection() data.data.optional_data.et_get_prices() + data.data.counter_all_data.validate_hierarchy() except KeyboardInterrupt: log.critical("Ausführung durch exit_after gestoppt: "+traceback.format_exc()) except Exception: @@ -141,7 +142,7 @@ def schedule_jobs(): [schedule.every().minute.at(f":{i:02d}").do(soc.update).tag("algorithm") for i in range(0, 60, 10)] [schedule.every().minute.at(f":{i:02d}").do(smarthome_handler).tag("algorithm") for i in range(0, 60, 5)] [schedule.every().hour.at(f":{i:02d}").do(handler.handler5Min) for i in range(0, 60, 5)] - [schedule.every().hour.at(f":{i:02d}").do(handler.handler5MinAlgorithm).tag("algorithm") for i in range(1, 60, 5)] + [schedule.every().hour.at(f":{i:02d}").do(handler.handler5MinAlgorithm).tag("algorithm") for i in range(0, 60, 5)] schedule.every().day.at("00:00:00").do(handler.handler_midnight).tag("algorithm") schedule.every().day.at(f"0{randrange(0, 5)}:{randrange(0, 59):02d}:{randrange(0, 59):02d}").do( handler.handler_random_nightly) @@ -219,7 +220,6 @@ def schedule_jobs(): t_internal_chargepoint.start() # Warten, damit subdata Zeit hat, alle Topics auf dem Broker zu empfangen. time.sleep(5) - sub.counter_all_data.validate_hierarchy() schedule_jobs() except Exception: log.exception("Fehler im Main-Modul") From 5516affd81812086fd1115fc72a9aa75e7a4f38f Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Jul 2023 16:30:05 +0200 Subject: [PATCH 010/121] fix rcit --- packages/modules/devices/rct/bat.py | 19 +++++-------------- packages/modules/devices/rct/counter.py | 4 ++-- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/packages/modules/devices/rct/bat.py b/packages/modules/devices/rct/bat.py index 983ed0da49..6c90456e41 100644 --- a/packages/modules/devices/rct/bat.py +++ b/packages/modules/devices/rct/bat.py @@ -27,23 +27,14 @@ def update(self, rct_client: RCT) -> None: # read all parameters rct_client.read(my_tab) - # postprocess values - soc = socx.value - power = int(watt1.value) * -1.0 - imported = int(watt2.value) - exported = int(watt3.value) - stat1 = int(stat1.value) - stat2 = int(stat2.value) - stat3 = int(stat3.value) - - if (stat1 + stat2 + stat3) > 0: + if (int(stat1.value) + int(stat2.value) + int(stat3.value)) > 0: raise FaultState.error("Alarm Status Speicher ist ungleich 0.") bat_state = BatState( - power=int(power) * -1, - soc=soc * 100, - imported=int(imported), - exported=int(exported) + power=int(watt1.value) * -1, + soc=socx.value * 100, + imported=int(watt2.value), + exported=int(watt3.value) ) self.store.set(bat_state) diff --git a/packages/modules/devices/rct/counter.py b/packages/modules/devices/rct/counter.py index 0ef3dea77b..dbae50471b 100644 --- a/packages/modules/devices/rct/counter.py +++ b/packages/modules/devices/rct/counter.py @@ -35,12 +35,12 @@ def update(self, rct_client: RCT): # read all parameters rct_client.read(my_tab) - if (stat1 + stat2 + stat3 + stat4) > 0: + if (int(stat1) + int(stat2) + int(stat3) + int(stat4)) > 0: raise FaultState.error("Alarm Status Zähler ist ungleich 0.") counter_state = CounterState( imported=int(imported.value), - exported=exported.value*-1.0, + exported=int(exported.value)*-1.0, power=int(power.value), frequency=int(freq.value), powers=[int(power1.value), int(power2.value), int(power3.value)], From f609dd9551e5d18a58ae698742646d9d97cc7edd Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 27 Jul 2023 08:37:28 +0200 Subject: [PATCH 011/121] fix bezug_rct2 --- modules/bezug_rct2/main.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/bezug_rct2/main.sh b/modules/bezug_rct2/main.sh index 2410ddb8c1..cd13e4755f 100755 --- a/modules/bezug_rct2/main.sh +++ b/modules/bezug_rct2/main.sh @@ -10,7 +10,7 @@ else MYLOGFILE="${RAMDISKDIR}/evu.log" fi -bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.rct.device" "counter" "bezug1_ip" >>"${MYLOGFILE}" 2>&1 +bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.rct.device" "counter" "${bezug1_ip}" >>"${MYLOGFILE}" 2>&1 ret=$? openwbDebugLog ${DMOD} 2 "RET: ${ret}" From 3ed14091ee95e31b64a30295bd511828039de0ab Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 27 Jul 2023 08:53:53 +0200 Subject: [PATCH 012/121] fix typos and format --- .../chargepoint_module.py | 4 ++-- .../internal_chargepoint_handler/socket.py | 2 +- runs/isss.py | 7 +++--- runs/update.sh | 22 +++++++++---------- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/packages/modules/internal_chargepoint_handler/chargepoint_module.py b/packages/modules/internal_chargepoint_handler/chargepoint_module.py index 5c0ad0cd29..aea0a475f5 100644 --- a/packages/modules/internal_chargepoint_handler/chargepoint_module.py +++ b/packages/modules/internal_chargepoint_handler/chargepoint_module.py @@ -50,7 +50,7 @@ def get_values(self, phase_switch_cp_active: bool) -> Tuple[ChargepointState, fl if phase_switch_cp_active: # Während des Threads wird die CP-Leitung unterbrochen, das EV soll aber als angesteckt betrachtet - # werden. In 1.9 war das kein Problem, da währendessen keine Werte von der EVSE abgefragt wurden. + # werden. In 1.9 war das kein Problem, da währenddessen keine Werte von der EVSE abgefragt wurden. log.debug( "Plug_state %s beibehalten, da CP-Unterbrechung oder Phasenumschaltung aktiv.", self.old_plug_state ) @@ -75,7 +75,7 @@ def get_values(self, phase_switch_cp_active: bool) -> Tuple[ChargepointState, fl self.__client.read_error += 1 if self.__client.read_error > 5: log.exception( - "Anhaltender Fehler beim Auslesen der EVSE. Lade- und Steckerstatus werden zurückgesetzt.") + "Anhaltender Fehler beim Auslesen der EVSE. Lade- und Stecker-Status werden zurückgesetzt.") plug_state = False charge_state = False chargepoint_state = ChargepointState( diff --git a/packages/modules/internal_chargepoint_handler/socket.py b/packages/modules/internal_chargepoint_handler/socket.py index 94ddfaea50..614c680c4a 100644 --- a/packages/modules/internal_chargepoint_handler/socket.py +++ b/packages/modules/internal_chargepoint_handler/socket.py @@ -29,7 +29,7 @@ def wrapper(*args, **kwargs): now = time.time() sleep_needed = self.max_seconds - (now - self.movement_times[self.counter]) if sleep_needed > 0: - log.debug("Actor cooldown. Don't move actor.") + log.debug("Actor cool down. Not moving actor.") return None else: self.movement_times[self.counter] = time.time() diff --git a/runs/isss.py b/runs/isss.py index dabf257c4c..e56cb4d0c2 100755 --- a/runs/isss.py +++ b/runs/isss.py @@ -65,7 +65,7 @@ def update_values(self, counter_state: ChargepointState) -> None: # iterate over counter_state vars_old_counter_state = vars(self.old_counter_state) for key, value in vars(counter_state).items(): - # Zählerstatus immer publishen für Ladelog-Einträge + # Zählerstatus immer veröffentlichen für Lade-Log-Einträge if value != vars_old_counter_state[key] or key == "imported": self._pub_values_to_1_9(key, value) self._pub_values_to_2(key, value) @@ -269,6 +269,7 @@ def get_parent_wb() -> str: FaultState.warning("Für den Betrieb im Nur-Ladepunkt-Modus ist zwingend eine Master-openWB erforderlich.") return "localhost" + class IsssChargepoint: def __init__(self, client_handler: ClientHandler, local_charge_point_num: int, mode: IsssMode, socket_max_current: int) -> None: @@ -277,9 +278,9 @@ def __init__(self, client_handler: ClientHandler, local_charge_point_num: int, m if mode == IsssMode.SOCKET: self.module = Socket(socket_max_current, local_charge_point_num, client_handler, "localhost") else: - self.module = chargepoint_module.ChargepointModule( local_charge_point_num, client_handler, "localhost") + self.module = chargepoint_module.ChargepointModule(local_charge_point_num, client_handler, "localhost") else: - self.module = chargepoint_module.ChargepointModule( local_charge_point_num, client_handler, "localhost") + self.module = chargepoint_module.ChargepointModule(local_charge_point_num, client_handler, "localhost") self.update_values = UpdateValues(local_charge_point_num) self.update_state = UpdateState(self.module) self.old_plug_state = False diff --git a/runs/update.sh b/runs/update.sh index 6374c44f5e..d3e7114bfe 100755 --- a/runs/update.sh +++ b/runs/update.sh @@ -1,5 +1,5 @@ #!/bin/bash -OPENWBBASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}")/.. && pwd) +OPENWBBASEDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) cd /var/www/html/openWB . /var/www/html/openWB/loadconfig.sh @@ -25,24 +25,24 @@ else train=$releasetrain fi -# check for ext openWB on configured chargepoints and start update +# check for ext openWB on configured charge points and start update if [[ "$evsecon" == "extopenwb" ]]; then echo "starting update on extOpenWB on LP1" - mosquitto_pub -t openWB/set/system/releaseTrain -r -h $chargep1ip -m "$releasetrain" - mosquitto_pub -t openWB/set/system/PerformUpdate -r -h $chargep1ip -m "1" + mosquitto_pub -t openWB/set/system/releaseTrain -r -h "$chargep1ip" -m "$releasetrain" + mosquitto_pub -t openWB/set/system/PerformUpdate -r -h "$chargep1ip" -m "1" fi if [[ $lastmanagement == "1" ]]; then if [[ "$evsecons1" == "extopenwb" ]]; then echo "starting update on extOpenWB on LP2" - mosquitto_pub -t openWB/set/system/releaseTrain -r -h $chargep2ip -m "$releasetrain" - mosquitto_pub -t openWB/set/system/PerformUpdate -r -h $chargep2ip -m "1" + mosquitto_pub -t openWB/set/system/releaseTrain -r -h "$chargep2ip" -m "$releasetrain" + mosquitto_pub -t openWB/set/system/PerformUpdate -r -h "$chargep2ip" -m "1" fi fi if [[ $lastmanagements2 == "1" ]]; then if [[ "$evsecons2" == "extopenwb" ]]; then echo "starting update on extOpenWB on LP3" - mosquitto_pub -t openWB/set/system/releaseTrain -r -h $chargep3ip -m "$releasetrain" - mosquitto_pub -t openWB/set/system/PerformUpdate -r -h $chargep3ip -m "1" + mosquitto_pub -t openWB/set/system/releaseTrain -r -h "$chargep3ip" -m "$releasetrain" + mosquitto_pub -t openWB/set/system/PerformUpdate -r -h "$chargep3ip" -m "1" fi fi for i in $(seq 4 8); do @@ -52,14 +52,14 @@ for i in $(seq 4 8); do if [[ ${!evseconVar} == "extopenwb" ]]; then echo "starting update on extOpenWB on LP$i" chargepIpVar="chargep${i}ip" - mosquitto_pub -t openWB/set/system/releaseTrain -r -h ${!chargepIpVar} -m "$releasetrain" - mosquitto_pub -t openWB/set/system/PerformUpdate -r -h ${!chargepIpVar} -m "1" + mosquitto_pub -t openWB/set/system/releaseTrain -r -h "${!chargepIpVar}" -m "$releasetrain" + mosquitto_pub -t openWB/set/system/PerformUpdate -r -h "${!chargepIpVar}" -m "1" fi fi done # Wait for regulation loop(s) and cron jobs to end, but with timeout in case a script hangs -pgrep -f "$OPENWBBASEDIR/(regel\\.sh|runs/cron5min\\.sh|runs/cronnightly\\.sh)$" | \ +pgrep -f "$OPENWBBASEDIR/(regel\\.sh|runs/cron5min\\.sh|runs/cronnightly\\.sh)$" | timeout 15 xargs -n1 -I'{}' tail -f --pid="{}" /dev/null # backup some files before fetching new release From bc14466c66d37669565173e3f16e85f1154a194a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 28 Jul 2023 09:01:28 +0200 Subject: [PATCH 013/121] typos and format --- packages/modules/devices/rct/rct_lib.py | 51 ++++++++++++------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/packages/modules/devices/rct/rct_lib.py b/packages/modules/devices/rct/rct_lib.py index 806fdf1657..721259d8e4 100755 --- a/packages/modules/devices/rct/rct_lib.py +++ b/packages/modules/devices/rct/rct_lib.py @@ -22,9 +22,8 @@ log = logging.getLogger(__name__) -# helper function to print and error - +# helper function to print and error def hexdump(src, length=16): FILTER = ''.join([(len(repr(chr(x))) == 3) and chr(x) or '.' for x in range(256)]) lines = [] @@ -75,7 +74,7 @@ def __init__(self, msgid, idx, name, data_type=rct_data.t_unknown, desc=''): self.name = name self.desc = desc self.value = None - self.pending = False # used to read pending + self.pending = False # used to read pending # decode a value according to the id data type def decode_value(self, data): @@ -130,21 +129,21 @@ def decode_value(self, data): cmd_long_response = 0x06 cmd_extension = 0x3C -HEADER_WITH_LENGTH = 1 + 1 + 2 # frame length for header, command and 2 byte length -FRAME_TYPE_STANDARD = 4 # standard frame with id -FRAME_TYPE_PLANT = 8 # plant frame with id and address -FRAME_CRC16_LENGTH = 2 # nr of bytes for CRC16 field +HEADER_WITH_LENGTH = 1 + 1 + 2 # frame length for header, command and 2 byte length +FRAME_TYPE_STANDARD = 4 # standard frame with id +FRAME_TYPE_PLANT = 8 # plant frame with id and address +FRAME_CRC16_LENGTH = 2 # nr of bytes for CRC16 field class Frame: def __init__(self, command=0, address=0, frame_type=FRAME_TYPE_STANDARD): self.command = command - self.address = address # for plant communication only + self.address = address # for plant communication only self.idList = [] self.frame_type = frame_type self.bEscapeMode = False self.rxStream = b"" - self.pendingCount = False # nr of id's which are not yet handled + self.pendingCount = False # nr of id's which are not yet handled self.statisticRxDropped = 0 self.statisticRxConsumed = 0 self.statisticRxDuplicate = 0 @@ -167,7 +166,7 @@ def add(self, item): self.pendingCount += 1 # consume all data, extract frames and decode them. - # Incomplete frames remain in self.rxStream for the nexht data chunk + # Incomplete frames remain in self.rxStream for the next data chunk def consume(self, data): for d in data: c = bytes([d]) @@ -182,7 +181,7 @@ def consume(self, data): self.bEscapeMode = False else: if c == escape_token: - self.bEscapeMode = True # escape mode -> set mode and don't add byte + self.bEscapeMode = True # escape mode -> set mode and don't add byte continue # add byte to receive stream @@ -193,11 +192,11 @@ def consume(self, data): if len(self.rxStream) == HEADER_WITH_LENGTH: cmd = struct.unpack("B", bytes([self.rxStream[1]]))[0] if cmd == cmd_long_response or cmd == cmd_long_write: - self.FrameLength = struct.unpack(">H", self.rxStream[2:4])[0] + 2 # 2 byte length MSBF + self.FrameLength = struct.unpack(">H", self.rxStream[2:4])[0] + 2 # 2 byte length MSBF else: - self.FrameLength = struct.unpack(">B", bytes([self.rxStream[2]]))[0] + 1 # 1 byte length + self.FrameLength = struct.unpack(">B", bytes([self.rxStream[2]]))[0] + 1 # 1 byte length - self.FrameLength += 2 # 2 bytes header + self.FrameLength += 2 # 2 bytes header else: if len(self.rxStream) == self.FrameLength + FRAME_CRC16_LENGTH: # print(binascii.hexlify(self.rxStream)) @@ -222,10 +221,10 @@ def decode(self): data_length = struct.unpack(">H", self.rxStream[2:4])[0] # 2 byte length MSBF idx = 4 else: - data_length = struct.unpack(">B", bytes([self.rxStream[2]]))[0] # 1 byte length + data_length = struct.unpack(">B", bytes([self.rxStream[2]]))[0] # 1 byte length idx = 3 - # substract frame type specific length + # subtract frame type specific length data_length -= self.frame_type # extract 32 bit ID @@ -259,7 +258,7 @@ def decode(self): self.statisticRxDropped += 1 - # create a formated text string for all elements in frame.idList + # create a formatted text string for all elements in frame.idList def format_list(self, access_time): fmt = "" for item in self.idList: @@ -297,12 +296,12 @@ def encode(self): else: buf += struct.pack('>B', length) # 1 byte for length - # just for completness but PLANT frames are not used in send direction + # just for completeness but PLANT frames are not used in send direction if self.frame_type == FRAME_TYPE_PLANT: - buf += struct.pack('>I', self.address) # 4 bytes + buf += struct.pack('>I', self.address) # 4 bytes # append id - buf += struct.pack('>I', item.id) # 4 bytes + buf += struct.pack('>I', item.id) # 4 bytes # append data if used if item.value is not None: @@ -310,7 +309,7 @@ def encode(self): # calculate and append CRC16 crc16 = self.CRC16(buf) - buf += struct.pack('>H', crc16) # 2 bytes + buf += struct.pack('>H', crc16) # 2 bytes # add start token and inject escape tokens in buf where necessary to buf_all buf_all += struct.pack('c', start_token) + self.createStream(buf) @@ -562,7 +561,7 @@ def id_tab_setup(self): self.id_tab.append(rct_id(0x01676FA6, 3, "battery.cells_stat[3]", rct_data.t_string, "battery.cells_stat[3]")) self.id_tab.append(rct_id(0x019C0B60, 4, "cs_neg[2]", - rct_data.t_float, "Miltiply value of the current sensor 2 by")) + rct_data.t_float, "Multiply value of the current sensor 2 by")) self.id_tab.append(rct_id(0x02247588, 5, "battery_placeholder[0].cells_stat[2].u_min.value", rct_data.t_float, "battery_placeholder[0].cells_stat[2].u_min.value")) self.id_tab.append(rct_id(0x031A6110, 6, "energy.e_ext_month", @@ -1068,7 +1067,7 @@ def id_tab_setup(self): self.id_tab.append(rct_id(0x4BE02BB7, 256, "energy.e_load_day_sum", rct_data.t_float, "energy.e_load_day_sum")) self.id_tab.append(rct_id(0x4C12C4C7, 257, "cs_neg[1]", - rct_data.t_float, "Miltiply value of the current sensor 1 by")) + rct_data.t_float, "Multiply value of the current sensor 1 by")) self.id_tab.append(rct_id(0x4C14CC7C, 258, "logger.year_ea_log_ts", rct_data.t_log_ts, "logger.year_ea_log_ts")) self.id_tab.append(rct_id(0x4C2A7CDC, 259, "nsm.cos_phi_p[2][1]", @@ -1488,7 +1487,7 @@ def id_tab_setup(self): self.id_tab.append(rct_id(0x81AF854E, 466, "nsm.pu_use", rct_data.t_bool, "P(U) active")) self.id_tab.append(rct_id(0x82258C01, 467, "cs_neg[0]", - rct_data.t_float, "Miltiply value of the current sensor 0 by")) + rct_data.t_float, "Multiply value of the current sensor 0 by")) self.id_tab.append(rct_id(0x82CD1525, 468, "grid_mon[1].u_under.threshold", rct_data.t_float, "Min. voltage level 2 [V]")) self.id_tab.append(rct_id(0x82E3C121, 469, "g_sync.q_ac[1]", @@ -1815,8 +1814,8 @@ def id_tab_setup(self): rct_data.t_float, "Grid power phase 3 [W]")) self.id_tab.append(rct_id(0xB228EC94, 630, "battery_placeholder[0].cells_stat[3].t_max.time", rct_data.t_uint32, "battery_placeholder[0].cells_stat[3].t_max.time")) - self.id_tab.append(rct_id(0xB238942F, 631, "last_successfull_flash_op", - rct_data.t_int16, "last_successfull_flash_op")) + self.id_tab.append(rct_id(0xB238942F, 631, "last_successful_flash_op", + rct_data.t_int16, "last_successful_flash_op")) self.id_tab.append(rct_id(0xB298395D, 632, "dc_conv.dc_conv_struct[0].u_sg_lp", rct_data.t_float, "Solar generator A voltage [V]")) self.id_tab.append(rct_id(0xB2FB9A90, 633, "bat_mng_struct.k_trust", From f1e55f24fdfccc4dd83e851c574751f733ccc0cf Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 28 Jul 2023 09:07:47 +0200 Subject: [PATCH 014/121] fix logging --- packages/modules/devices/rct/rct_lib.py | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/packages/modules/devices/rct/rct_lib.py b/packages/modules/devices/rct/rct_lib.py index 721259d8e4..1599e1bb13 100755 --- a/packages/modules/devices/rct/rct_lib.py +++ b/packages/modules/devices/rct/rct_lib.py @@ -444,7 +444,7 @@ def connect_to_server(self): self.socket.settimeout(2.0) try: self.socket.connect((self.host, self.port)) - log.debug('connect to ', self.host, 'port', self.port) + log.debug('connect to {} port {}'.format(self.host, self.port)) return True except Exception: print("-"*100) @@ -529,27 +529,6 @@ def close(self): print("-"*100) traceback.print_exc(file=sys.stdout) - # write value to a ramdisk variable - def write_ramdisk(self, fn, val, rctname): - try: - fnn = "/var/www/html/openWB/ramdisk/"+str(fn) - with open(fnn, 'w') as f: - f.write(str(val)) - except Exception: - return - - # helper function to print debug messages - def errlog(self, *args): - self.logger.error(' '.join(map(str, args))) - - # helper function to print debug messages - def dbglog(self, *args): - self.logger.debug(' '.join(map(str, args))) - - # helper function to print info messages - def infolog(self, *args): - self.logger.info(' '.join(map(str, args))) - def id_tab_setup(self): # add all known id's with name, data type, description and unit to the id table self.id_tab.append(rct_id(0x0104EB6A, 0, "rb485.f_grid[2]", From b059e175c087964ca9e6738da3e43eb30fee187f Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 31 Jul 2023 10:03:54 +0200 Subject: [PATCH 015/121] fix amount limit --- packages/control/chargepoint/chargepoint.py | 2 +- packages/control/ev.py | 51 +++++++++++++-------- packages/helpermodules/setdata.py | 4 +- packages/helpermodules/update_config.py | 2 +- 4 files changed, 36 insertions(+), 23 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index 709da1a2a2..f689f1d088 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -807,7 +807,7 @@ def update(self, ev_list: Dict[str, Ev]) -> None: charging_ev.data.control_parameter.phases = min( self.get_phases_by_selected_chargemode(), max_phase_hw) state, message_ev, submode, required_current, phases = charging_ev.get_required_current( - self.data.set.log.imported_since_mode_switch, + self.data.get.imported, max_phase_hw, self.cp_ev_support_phase_switch()) phases = self.set_phases(phases) diff --git a/packages/control/ev.py b/packages/control/ev.py index 7d1816d072..8a45259f6b 100644 --- a/packages/control/ev.py +++ b/packages/control/ev.py @@ -141,8 +141,8 @@ class ControlParameter: timestamp_perform_phase_switch: Optional[str] = None submode: Chargemode_enum = Chargemode_enum.STOP chargemode: Chargemode_enum = Chargemode_enum.STOP - used_amount_instant_charging: float = 0 - imported_at_plan_start: float = 0 + imported_instant_charging: Optional[float] = None + imported_at_plan_start: Optional[float] = None current_plan: Optional[str] = None state: ChargepointState = ChargepointState.NO_CHARGING_ALLOWED @@ -230,9 +230,9 @@ def reset_ev(self): Pub().pub("openWB/set/vehicle/"+str(self.num) + "/control_parameter/chargemode", "stop") Pub().pub("openWB/set/vehicle/"+str(self.num) + - "/control_parameter/used_amount_instant_charging", 0) + "/control_parameter/imported_instant_charging", None) Pub().pub("openWB/set/vehicle/"+str(self.num) + - "/control_parameter/imported_at_plan_start", 0) + "/control_parameter/imported_at_plan_start", None) Pub().pub("openWB/set/vehicle/"+str(self.num) + "/control_parameter/current_plan", None) Pub().pub("openWB/set/vehicle/"+str(self.num) + @@ -242,8 +242,8 @@ def reset_ev(self): self.data.control_parameter.timestamp_perform_phase_switch = None self.data.control_parameter.submode = "stop" self.data.control_parameter.chargemode = "stop" - self.data.control_parameter.used_amount_instant_charging = 0 - self.data.control_parameter.imported_at_plan_start = 0 + self.data.control_parameter.imported_instant_charging = None + self.data.control_parameter.imported_at_plan_start = None self.data.control_parameter.current_plan = None self.data.control_parameter.state = ChargepointState.NO_CHARGING_ALLOWED except Exception: @@ -268,7 +268,7 @@ def soc_interval_expired(self, soc_update_data: SocUpdateData) -> bool: return request_soc def get_required_current(self, - charged_since_mode_switch: float, + imported: float, max_phases: int, phase_switch_supported: bool) -> Tuple[bool, Optional[str], str, float, int]: """ ermittelt, ob und mit welchem Strom das EV geladen werden soll (unabhängig vom Lastmanagement) @@ -295,7 +295,9 @@ def get_required_current(self, state = True try: if self.charge_template.data.chargemode.selected == "scheduled_charging": - used_amount = charged_since_mode_switch - self.data.control_parameter.imported_at_plan_start + if self.data.control_parameter.imported_at_plan_start is None: + self.data.control_parameter.imported_at_plan_start = imported + used_amount = imported - self.data.control_parameter.imported_at_plan_start plan_data = self.charge_template.scheduled_charging_recent_plan( self.data.get.soc, self.ev_template, @@ -309,10 +311,10 @@ def get_required_current(self, if (self.charge_template.data.chargemode.scheduled_charging.plans[plan_data.num].limit. selected == "amount" and name != self.data.control_parameter.current_plan): - self.data.control_parameter.imported_at_plan_start = charged_since_mode_switch + self.data.control_parameter.imported_at_plan_start = imported Pub().pub( f"openWB/set/vehicle/{self.num}/control_parameter/imported_at_plan_start", - charged_since_mode_switch) + imported) else: name = None required_current, submode, message, phases = self.charge_template.scheduled_charging_calc_current( @@ -327,7 +329,12 @@ def get_required_current(self, # Wenn Zielladen auf Überschuss wartet, prüfen, ob Zeitladen aktiv ist. if (submode != "instant_charging" and self.charge_template.data.time_charging.active): - used_amount = charged_since_mode_switch - self.data.control_parameter.imported_at_plan_start + if self.data.control_parameter.imported_at_plan_start is None: + self.data.control_parameter.imported_at_plan_start = imported + Pub().pub( + f"openWB/set/vehicle/{self.num}/control_parameter/imported_at_plan_start", + imported) + used_amount = imported - self.data.control_parameter.imported_at_plan_start tmp_current, tmp_submode, tmp_message, name = self.charge_template.time_charging( self.data.get.soc, used_amount @@ -335,6 +342,12 @@ def get_required_current(self, if tmp_current > 0: self.data.control_parameter.current_plan = name Pub().pub(f"openWB/set/vehicle/{self.num}/control_parameter/current_plan", name) + # Wenn mit einem neuen Plan geladen wird, muss auch die Energiemenge von neuem gezählt werden. + if name != self.data.control_parameter.current_plan: + self.data.control_parameter.imported_at_plan_start = imported + Pub().pub( + f"openWB/set/vehicle/{self.num}/control_parameter/imported_at_plan_start", + imported) required_current = tmp_current submode = tmp_submode message = tmp_message @@ -342,15 +355,15 @@ def get_required_current(self, if self.charge_template.data.chargemode.selected == "instant_charging": # Wenn der Submode auf stop gestellt wird, wird auch die Energiemenge seit Wechsel des Modus # zurückgesetzt, dann darf nicht die Energiemenge erneute geladen werden. - if (self.charge_template.data.chargemode.instant_charging.limit.selected == "amount" and - charged_since_mode_switch > self.data.control_parameter.used_amount_instant_charging): - self.data.control_parameter.used_amount_instant_charging = charged_since_mode_switch + if self.data.control_parameter.imported_instant_charging is None: + self.data.control_parameter.imported_instant_charging = imported Pub().pub( - f"openWB/set/vehicle/{self.num}/control_parameter/used_amount_instant_charging", - charged_since_mode_switch) + f"openWB/set/vehicle/{self.num}/control_parameter/imported_instant_charging", + imported) + used_amount = imported - self.data.control_parameter.imported_instant_charging required_current, submode, message = self.charge_template.instant_charging( self.data.get.soc, - self.data.control_parameter.used_amount_instant_charging) + used_amount) elif self.charge_template.data.chargemode.selected == "pv_charging": required_current, submode, message = self.charge_template.pv_charging( self.data.get.soc, self.ev_template.data.min_current) @@ -659,7 +672,7 @@ def time_charging(self, def instant_charging(self, soc: float, - used_amount_instant_charging: float) -> Tuple[int, str, Optional[str]]: + imported_instant_charging: float) -> Tuple[int, str, Optional[str]]: """ prüft, ob die Lademengenbegrenzung erreicht wurde und setzt entsprechend den Ladestrom. """ message = None @@ -676,7 +689,7 @@ def instant_charging(self, else: return 0, "stop", self.INSTANT_CHARGING_SOC_REACHED elif instant_charging.limit.selected == "amount": - if used_amount_instant_charging < self.data.chargemode.instant_charging.limit.amount: + if imported_instant_charging < self.data.chargemode.instant_charging.limit.amount: return instant_charging.current, "instant_charging", message else: return 0, "stop", self.INSTANT_CHARGING_AMOUNT_REACHED diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 48ce51b56f..41a0dd4b19 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -134,7 +134,7 @@ def _validate_value(self, msg: mqtt.MQTTMessage, data_type, ranges=[], collectio else: log.error(f"Payload ungültig: Topic {msg.topic}, Payload {value} sollte ein String sein.") elif data_type == int or data_type == float: - if self._validate_min_max_value(value, msg, data_type, ranges): + if self._validate_min_max_value(value, msg, data_type, ranges) or isinstance(value, type(None)): valid = True elif data_type == bool: valid, value = self._validate_bool_value(value, msg) @@ -432,7 +432,7 @@ def process_vehicle_topic(self, msg: mqtt.MQTTMessage): "/control_parameter/timestamp_perform_phase_switch" in msg.topic or "/control_parameter/current_plan" in msg.topic): self._validate_value(msg, str) - elif ("/control_parameter/used_amount_instant_charging" in msg.topic or + elif ("/control_parameter/imported_instant_charging" in msg.topic or "/control_parameter/imported_at_plan_start" in msg.topic): self._validate_value(msg, float, [(0, float("inf"))]) elif "/control_parameter/state" in msg.topic: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 347cfedc3d..0e55d13cd1 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -231,7 +231,7 @@ class UpdateConfig: "^openWB/vehicle/[0-9]+/control_parameter/timestamp_auto_phase_switch$", "^openWB/vehicle/[0-9]+/control_parameter/timestamp_perform_phase_switch$", "^openWB/vehicle/[0-9]+/control_parameter/timestamp_switch_on_off$", - "^openWB/vehicle/[0-9]+/control_parameter/used_amount_instant_charging$", + "^openWB/vehicle/[0-9]+/control_parameter/imported_instant_charging$", "^openWB/vehicle/[0-9]+/control_parameter/phases$", "^openWB/vehicle/[0-9]+/control_parameter/state$", "^openWB/vehicle/[0-9]+/set/ev_template$", From bbab02b7b2b59795a8c74fabb3087e083200aa85 Mon Sep 17 00:00:00 2001 From: okaegi Date: Mon, 31 Jul 2023 13:43:11 +0200 Subject: [PATCH 016/121] Chargestatus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bitte für 1.9 und 2.0 übernehmen. Chargestatus wird zentral gelesen und gesetzt --- packages/smarthome/smartbase.py | 21 +++++---------------- packages/smarthome/smartcommon.py | 15 +++++++++------ runs/smarthomemq.py | 17 +++++++++++++++-- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/smarthome/smartbase.py b/packages/smarthome/smartbase.py index 5925a24cd3..cde68e4a24 100644 --- a/packages/smarthome/smartbase.py +++ b/packages/smarthome/smartbase.py @@ -37,6 +37,7 @@ def __init__(self) -> None: # 30 = gestartet um fertig bis zu erreichen # default 10 self._first_run = 1 + self.chargestatus = False self.device_nummer = 0 self.temp0 = '300' self.temp1 = '300' @@ -541,18 +542,6 @@ def conditions(self, speichersoc: int) -> None: if ((self.device_canswitch == 0) or (self.device_manual == 1)): return - file_charge = '/var/www/html/openWB/ramdisk/llkombiniert' - testcharge = 0.0 - try: - if os.path.isfile(file_charge): - with open(file_charge, 'r') as f: - testcharge = float(f.read()) - except Exception: - pass - if testcharge <= 1000: - chargestatus = 0 - else: - chargestatus = 1 work_ausschaltschwelle = self._device_ausschaltschwelle work_ausschaltverzoegerung = self._device_ausschaltverzoegerung local_time = datetime.now(timezone.utc).astimezone() @@ -777,8 +766,8 @@ def conditions(self, speichersoc: int) -> None: log.info("(" + str(self.device_nummer) + ") " + self.device_name + " Soll reduziert/abgeschaltet werden" + - " bei Ladung, pruefe " + str(testcharge)) - if chargestatus == 1: + " bei Ladung, pruefe " + str(self.chargestatus)) + if self.chargestatus: log.info("(" + str(self.device_nummer) + ") " + self.device_name + " Ladung läuft, pruefe Mindestlaufzeit") @@ -850,8 +839,8 @@ def conditions(self, speichersoc: int) -> None: log.info("(" + str(self.device_nummer) + ") " + self.device_name + " Soll nicht eingeschaltet werden bei" + - " Ladung, pruefe " + str(testcharge)) - if chargestatus == 1: + " Ladung, pruefe " + str(self.chargestatus)) + if self.chargestatus: log.info("(" + str(self.device_nummer) + ") " + self.device_name + " Ladung läuft, " + "wird nicht eingeschaltet") diff --git a/packages/smarthome/smartcommon.py b/packages/smarthome/smartcommon.py index 1eacf598b3..ae70a4552b 100644 --- a/packages/smarthome/smartcommon.py +++ b/packages/smarthome/smartcommon.py @@ -110,7 +110,7 @@ def on_message(client, userdata, msg) -> None: log.warning(" Skipped msg " + msg.topic + " Value " + value) -def getdevicevalues(uberschuss: int, uberschussoffset: int, pvwatt: int) -> None: +def getdevicevalues(uberschuss: int, uberschussoffset: int, pvwatt: int, chargestatus: bool) -> None: global mydevices totalwatt = 0 totalwattot = 0 @@ -122,6 +122,7 @@ def getdevicevalues(uberschuss: int, uberschussoffset: int, pvwatt: int) -> None mqtt_all = {} for mydevice in mydevices: mydevice.pvwatt = pvwatt + mydevice.chargestatus = chargestatus mydevice.getwatt(uberschuss, uberschussoffset) watt = mydevice.newwatt wattk = mydevice.newwattk @@ -390,7 +391,8 @@ def resetmaxeinschaltdauerfunc() -> None: resetmaxeinschaltdauer = 0 -def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: int) -> Tuple[int, int]: +def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int, + pvwatt: int, chargestatus: bool) -> Tuple[int, int]: global maxspeicher global mydevices uberschuss = wattbezug + speicherleistung @@ -400,7 +402,7 @@ def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int, pvwat log.info("Uberschuss: " + str(uberschuss) + " Uberschuss mit Offset: " + str(uberschussoffset) + " Pv: " + str(pvwatt)) log.info("Speicher Entladung(-)/Ladung(+): " + - str(speicherleistung) + " SpeicherSoC: " + str(speichersoc)) + str(speicherleistung) + " SpeicherSoC: " + str(speichersoc) + " Ladung: " + str(chargestatus)) reread = 0 try: with open(bp+'/ramdisk/rereadsmarthomedevices', 'r') as value: @@ -449,16 +451,17 @@ def initparam(inpcg: str, inpcs: str, inpsdevstat: str, inpsglobstat: str, inpto mqttport = inpport -def mainloop(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: int = 0) -> None: +def mainloop(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: int = 0, + chargestatus: bool = False) -> None: global firststart if firststart: readmq() firststart = False mqtt_man = {} sendmess = 0 - uberschuss, uberschussoffset = loadregelvars(wattbezug, speicherleistung, speichersoc, pvwatt) + uberschuss, uberschussoffset = loadregelvars(wattbezug, speicherleistung, speichersoc, pvwatt, chargestatus) resetmaxeinschaltdauerfunc() - getdevicevalues(uberschuss, uberschussoffset, pvwatt) + getdevicevalues(uberschuss, uberschussoffset, pvwatt, chargestatus) conditions(speichersoc) # do the manual stuff for i in range(1, (numberOfSupportedDevices+1)): diff --git a/runs/smarthomemq.py b/runs/smarthomemq.py index debc185d6f..5d09a7be48 100755 --- a/runs/smarthomemq.py +++ b/runs/smarthomemq.py @@ -2,6 +2,7 @@ from smarthome.smartcommon import mainloop, initparam import time import logging +import os log = logging.getLogger("smarthome") # openwb 1.9 spec mqttcg = 'openWB/config/get/SmartHome/' @@ -105,6 +106,18 @@ def checkbootdone() -> int: except Exception as e: log.warning("Fehler beim Auslesen der Ramdisk (pvallwatt):" + str(e)) - pvwatt = 0 - mainloop(wattbezug, speicherleistung, speichersoc, pvwatt) + pvwatt = 0 + file_charge = '/var/www/html/openWB/ramdisk/llkombiniert' + testcharge = 0.0 + try: + if os.path.isfile(file_charge): + with open(file_charge, 'r') as f: + testcharge = float(f.read()) + except Exception: + pass + if testcharge <= 1000: + chargestatus = 0 + else: + chargestatus = 1 + mainloop(wattbezug, speicherleistung, speichersoc, pvwatt, chargestatus) time.sleep(5) From 44c405a9e24743d4d8e8856d828373ba2731e029 Mon Sep 17 00:00:00 2001 From: okaegi Date: Mon, 31 Jul 2023 13:52:27 +0200 Subject: [PATCH 017/121] flake8 --- runs/smarthomemq.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runs/smarthomemq.py b/runs/smarthomemq.py index 5d09a7be48..29a70267e7 100755 --- a/runs/smarthomemq.py +++ b/runs/smarthomemq.py @@ -116,8 +116,8 @@ def checkbootdone() -> int: except Exception: pass if testcharge <= 1000: - chargestatus = 0 + chargestatus = False else: - chargestatus = 1 + chargestatus = True mainloop(wattbezug, speicherleistung, speichersoc, pvwatt, chargestatus) time.sleep(5) From 0ae37f51ff803932c018fc45a6ef049cdae08621 Mon Sep 17 00:00:00 2001 From: okaegi Date: Mon, 31 Jul 2023 14:03:39 +0200 Subject: [PATCH 018/121] =?UTF-8?q?chargestatus=20nachgef=C3=BChrt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nür fur 2-0 übernehmen... --- packages/smarthome/smarthome.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/smarthome/smarthome.py b/packages/smarthome/smarthome.py index 95052a2635..aa1ac06ffc 100644 --- a/packages/smarthome/smarthome.py +++ b/packages/smarthome/smarthome.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +from pickle import TRUE import threading from smarthome.smartcommon import mainloop, initparam import logging @@ -43,7 +44,12 @@ def handler() -> None: watt = SubData.counter_data[f"counter{SubData.counter_all_data.get_id_evu_counter()}"].data.get.power * -1 wattint = int(watt) pvwatt = int(SubData.pv_all_data.data.get.power) * -1 - mainloop(wattint, speicherleistung, speichersoc, pvwatt) + testwatt = int(SubData.cp_all_data.data.get.power) + if (testwatt <= 1000): + chargestatus = False + else: + chargestatus = True + mainloop(wattint, speicherleistung, speichersoc, pvwatt, chargestatus) except Exception: log.exception("Fehler im Smarthome-Handler") # run as thread for logging reasons From 2773b1744204507856728e407cec27242765e516 Mon Sep 17 00:00:00 2001 From: okaegi Date: Mon, 31 Jul 2023 14:08:48 +0200 Subject: [PATCH 019/121] fllake8.... --- packages/smarthome/smarthome.py | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/smarthome/smarthome.py b/packages/smarthome/smarthome.py index aa1ac06ffc..3346a3dfbb 100644 --- a/packages/smarthome/smarthome.py +++ b/packages/smarthome/smarthome.py @@ -1,5 +1,4 @@ #!/usr/bin/python3 -from pickle import TRUE import threading from smarthome.smartcommon import mainloop, initparam import logging From 3e8c67a5454e353eca8bd6bfae6fe56f25d1122b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 31 Jul 2023 16:12:39 +0200 Subject: [PATCH 020/121] update openwb.conf --- runs/updateConfig.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/runs/updateConfig.sh b/runs/updateConfig.sh index fc749928e6..39d8997b23 100755 --- a/runs/updateConfig.sh +++ b/runs/updateConfig.sh @@ -2343,6 +2343,11 @@ updateConfig(){ if grep -Fq "socmodul1=soc_idlp2" $ConfigFile; then sed -i "s/^socmodul1=soc_idlp2/socmodul=soc_vwidlp2/g" $ConfigFile fi - + if ! grep -Fq "ppbuchse=" $ConfigFile; then + if [[ -f /home/pi/ppbuchse ]]; then + ppbuchse=$(> $ConfigFile + fi + fi echo "Config file Update done." } From 34382bc63b6fb9357da54e30e4cd7367f5793501 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 1 Aug 2023 07:56:11 +0200 Subject: [PATCH 021/121] fix month name generation --- web/logging/chargelog/ladelogexport.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/web/logging/chargelog/ladelogexport.php b/web/logging/chargelog/ladelogexport.php index 9421e8c942..ed009a9a1d 100644 --- a/web/logging/chargelog/ladelogexport.php +++ b/web/logging/chargelog/ladelogexport.php @@ -2,7 +2,7 @@ - + @@ -39,7 +39,7 @@ function getCookie(cname) { var name = cname + '='; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); - for(var i = 0; i '); } @@ -77,12 +77,13 @@ function getCookie(cname) { ?>
@@ -104,9 +105,11 @@ function getCookie(cname) { + From 89620885c68c3583c9ec97680489571d305aabf5 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Tue, 1 Aug 2023 12:58:48 +0200 Subject: [PATCH 022/121] Update runs/updateConfig.sh Co-authored-by: benderl --- runs/updateConfig.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/runs/updateConfig.sh b/runs/updateConfig.sh index 39d8997b23..7e9545fdf3 100755 --- a/runs/updateConfig.sh +++ b/runs/updateConfig.sh @@ -2343,10 +2343,16 @@ updateConfig(){ if grep -Fq "socmodul1=soc_idlp2" $ConfigFile; then sed -i "s/^socmodul1=soc_idlp2/socmodul=soc_vwidlp2/g" $ConfigFile fi - if ! grep -Fq "ppbuchse=" $ConfigFile; then - if [[ -f /home/pi/ppbuchse ]]; then - ppbuchse=$(> $ConfigFile + if [[ -f /home/pi/ppbuchse ]]; then + ppbuchse=$(> $ConfigFile + else + ppbuchseOld=$(grep -F "ppbuchse=" $ConfigFile) + ppbuchseOld=${ppbuchseOld#ppbuchse=} + if ((ppbuchseOld != ppbuchse)); then + sed -i "s/^ppbuchse=.*$/ppbuchse=$ppbuchse/g" $ConfigFile + fi fi fi echo "Config file Update done." From ac6be1e565e7c056623003d462e4187c113e42ff Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 3 Aug 2023 12:33:40 +0200 Subject: [PATCH 023/121] fix rct --- packages/modules/devices/rct/bat.py | 8 ++++---- packages/modules/devices/rct/counter.py | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/modules/devices/rct/bat.py b/packages/modules/devices/rct/bat.py index 6c90456e41..0aaf5dbc4c 100644 --- a/packages/modules/devices/rct/bat.py +++ b/packages/modules/devices/rct/bat.py @@ -27,14 +27,14 @@ def update(self, rct_client: RCT) -> None: # read all parameters rct_client.read(my_tab) - if (int(stat1.value) + int(stat2.value) + int(stat3.value)) > 0: + if (stat1.value + stat2.value + stat3.value) > 0: raise FaultState.error("Alarm Status Speicher ist ungleich 0.") bat_state = BatState( - power=int(watt1.value) * -1, + power=watt1.value * -1, soc=socx.value * 100, - imported=int(watt2.value), - exported=int(watt3.value) + imported=watt2.value, + exported=watt3.value ) self.store.set(bat_state) diff --git a/packages/modules/devices/rct/counter.py b/packages/modules/devices/rct/counter.py index dbae50471b..49c6542216 100644 --- a/packages/modules/devices/rct/counter.py +++ b/packages/modules/devices/rct/counter.py @@ -35,16 +35,16 @@ def update(self, rct_client: RCT): # read all parameters rct_client.read(my_tab) - if (int(stat1) + int(stat2) + int(stat3) + int(stat4)) > 0: + if (stat1.value + stat2.value + stat3.value + stat4.value) > 0: raise FaultState.error("Alarm Status Zähler ist ungleich 0.") counter_state = CounterState( - imported=int(imported.value), - exported=int(exported.value)*-1.0, - power=int(power.value), - frequency=int(freq.value), - powers=[int(power1.value), int(power2.value), int(power3.value)], - voltages=[int(volt1.value), int(volt2.value), int(volt3.value)] + imported=imported.value, + exported=exported.value*-1.0, + power=power.value, + frequency=freq.value, + powers=[power1.value, power2.value, power3.value], + voltages=[volt1.value, volt2.value, volt3.value] ) self.store.set(counter_state) From 9c99dd253fb2e87e7a39312082d4988bf20635fe Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Thu, 3 Aug 2023 12:38:26 +0200 Subject: [PATCH 024/121] Bump version 1.9.303.0 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index b08e1b5e84..624e3c2306 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -1.9.302.0 +1.9.303.0 From 641fb9b2ee19b312dad7dfdafeea7bd1a2f072e6 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Thu, 3 Aug 2023 12:47:28 +0200 Subject: [PATCH 025/121] Bump version 1.9.304.0 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index 624e3c2306..007017453b 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -1.9.303.0 +1.9.304.0 From 5eb44db56fa527e2e496a44e1f1204914382b065 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Thu, 3 Aug 2023 12:58:58 +0200 Subject: [PATCH 026/121] Update version 2.1.1-Alpha.1 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index 7ec1d6db40..a15ffe25bf 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.0 +2.1.1-Alpha.1 From 34433e219fd9a20a3c44c533cd99f76ff25bc24a Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 3 Aug 2023 15:53:34 +0200 Subject: [PATCH 027/121] script hardware configuration --- packages/helpermodules/hardware_configuration.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py index e0d3cb2839..2c0c27aac0 100644 --- a/packages/helpermodules/hardware_configuration.py +++ b/packages/helpermodules/hardware_configuration.py @@ -1,4 +1,5 @@ import json +import sys from typing import Dict @@ -13,3 +14,7 @@ def update_hardware_configuration(new_setting: Dict) -> None: def get_hardware_configuration_setting(name: str): with open("/home/openwb/configuration.json", "r") as f: return json.loads(f.read())[name] + + +if __name__ == "__main__": + update_hardware_configuration(json.loads(sys.argv[1])) From 6fb9d3fd5cc64e33eed25212f9ee26c509a3c6fb Mon Sep 17 00:00:00 2001 From: Flock82 <81387035+Flock82@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:28:38 +0200 Subject: [PATCH 028/121] Soc Kia (#1029) * Create Kia-folder * Initial version * Flake8 * Flake8 * Flake8 * Logging adjusted --- packages/modules/vehicles/kia/__init__.py | 0 packages/modules/vehicles/kia/api.py | 849 ++++++++++++++++++++++ packages/modules/vehicles/kia/config.py | 21 + packages/modules/vehicles/kia/soc.py | 43 ++ 4 files changed, 913 insertions(+) create mode 100644 packages/modules/vehicles/kia/__init__.py create mode 100644 packages/modules/vehicles/kia/api.py create mode 100644 packages/modules/vehicles/kia/config.py create mode 100644 packages/modules/vehicles/kia/soc.py diff --git a/packages/modules/vehicles/kia/__init__.py b/packages/modules/vehicles/kia/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/vehicles/kia/api.py b/packages/modules/vehicles/kia/api.py new file mode 100644 index 0000000000..a82a109c5c --- /dev/null +++ b/packages/modules/vehicles/kia/api.py @@ -0,0 +1,849 @@ +#!/usr/bin/env python3 + +import base64 +import json +import uuid +import hashlib +import requests +import urllib.parse as urlparse +from urllib.parse import parse_qs +import time +from typing import Union + +import logging +from modules.common.component_state import CarState +from modules.common.store import RAMDISK_PATH + +log = logging.getLogger(__name__) + +# ---------- constants ---------- + + +def getString(param_id: str, brand: str) -> str: + if brand == 'kia': + if param_id == "app_id": + paramStr = "1518dd6b-2759-4995-9ae5-c9ad4a9ddad1" + elif param_id == "client_id": + paramStr = "fdc85c00-0a2f-4c64-bcb4-2cfb1500730a" + elif param_id == "auth_client_id": + paramStr = "572e0304-5f8d-4b4c-9dd5-41aa84eed160" + elif param_id == "gcm_sender_id": + paramStr = "cF5o4DiiQkaw5wsAkLzYIS:APA91bFB59MltBMK29zI0U2llq" + \ + "7khbB2jELkNFKMfBCH6KlCPL16pz_dG0fZ4ncvFn1IMT8nfoj" + \ + "b83JyLiT_skBTXtClHhDCKeRbyPy3yQjCVRC3zTZt--wI7vv4" + \ + "jD9aknhHhiQsoZoU" + elif param_id == "basic_token": + paramStr = "Basic ZmRjODVjMDAtMGEyZi00YzY0LWJjYjQtMmNmYjE1MDA" + \ + "3MzBhOnNlY3JldA==" + elif param_id == "stamp_pad": + paramStr = "C0B4D5C7089D987F027C96015929C70FA9D2B2AA99530CFD0" + \ + "17E4B243C4BA5C5DED96DEB128EEB5DD3963DFC12432C9073EF" + elif param_id == "host": + paramStr = "prd.eu-ccapi.kia.com:8080" + elif param_id == "base_url": + paramStr = "https://prd.eu-ccapi.kia.com:8080" + else: + raise RuntimeError + + if brand == 'hyundai': + if param_id == "app_id": + paramStr = "1eba27d2-9a5b-4eba-8ec7-97eb6c62fb51" + elif param_id == "client_id": + paramStr = "6d477c38-3ca4-4cf3-9557-2a1929a94654" + elif param_id == "auth_client_id": + paramStr = "64621b96-0f0d-11ec-82a8-0242ac130003" + elif param_id == "gcm_sender_id": + paramStr = "414998006775" + elif param_id == "basic_token": + paramStr = "Basic NmQ0NzdjMzgtM2NhNC00Y2YzLTk1NTctMmExOTI5YTk" + \ + "0NjU0OktVeTQ5WHhQekxwTHVvSzB4aEJDNzdXNlZYaG10UVI5" + \ + "aVFobUlGampvWTRJcHhzVg==" + elif param_id == "stamp_pad": + paramStr = "445B6846AFEF0D726646776865A650C9AEF98E51A474DCB7E" + \ + "C9B1B67D29C66EAAEF621CA02522A0B80A8087F7A3A7BB0F71B" + elif param_id == "host": + paramStr = "prd.eu-ccapi.hyundai.com:8080" + elif param_id == "base_url": + paramStr = "https://prd.eu-ccapi.hyundai.com:8080" + else: + raise RuntimeError + + return paramStr + + +def getBrand(vin: str) -> str: + # Determinate brand based on VIN + try: + if vin[:2] == 'KN' or vin[:3] == 'U5Y' or vin[:3] == 'U6Z': + brand = "kia" + elif vin[:3] == 'KMH' or vin[:3] == 'TMA': + brand = "hyundai" + else: + brand = "" + log.error("kia.getBrand: Vehicle WMI unknown") + raise RuntimeError + except Exception: + log.exception("kia.getBrand: VIN error") + raise + + return brand + +# ---------- stamp generation ---------- + + +def getStamp(brand: str) -> str: + try: + # Set App-ID and App-ID specific XOR-pad + app_id = getString("app_id", brand) + secret_ba = bytearray.fromhex(getString("stamp_pad", brand)) + + # Timestamp in ms as string + nowStr = str(int(time.time()) * 1000) + + # Combine plaintext and convert to bytearray + plaintext = app_id + ":" + nowStr + plaintext_ba = bytearray(plaintext.encode()) + + # XOR plaintext and key + stamp_ba = bytes(a ^ b for (a, b) in zip(plaintext_ba, secret_ba)) + + # Convert result to base64-string + stamp_b64_ba = base64.b64encode(stamp_ba) + stamp = stamp_b64_ba.decode() + + except Exception: + log.exception("kia.getStamp: stamp error") + raise + + return stamp + +# ---------- HTTP functions ---------- + + +last_cookies = {} +last_url = "" + + +def getHTTP(url: str = "", headers: str = "", cookies: str = "", + timeout: int = 30, allow_redirects: bool = True) -> str: + global last_cookies + global last_url + + try: + response = requests.get(url, headers=headers, + cookies=cookies, timeout=timeout, + allow_redirects=allow_redirects) + except Exception: + log.exception("kia.getHTTP: HTTP error") + raise + + if response.status_code == 200 or response.status_code == 204: + last_cookies = response.cookies.get_dict() + return response.text + elif response.status_code == 302: + return response.headers['Location'] + else: + try: + response_dict = json.loads(response.text) + if response.status_code == 400 or \ + response.status_code == 408 or \ + response.status_code == 503: + error_string = "[" + response_dict['resCode'] + "] " + \ + response_dict['resMsg'] + else: + error_string = "[" + response_dict['errCode'] + "] " + \ + response_dict['errMsg'] + except Exception: + error_string = "[XXXX] Unidentified Error" + " " + response.text + log.exception("kia.getHTTP:Request failed") + + log.error("kia.getHTTP:Request failed, StatusCode: " + + str(response.status_code) + ', Error: ' + error_string) + raise RuntimeError + + return "" + + +def putHTTP(url: str = "", data: Union[str, dict] = "", + headers: str = "", cookies: str = "", timeout: int = 30) -> str: + try: + if isinstance(data, dict): + response = requests.put(url, json=data, headers=headers, + cookies=cookies, timeout=timeout) + else: + response = requests.put(url, data=data, headers=headers, + cookies=cookies, timeout=timeout) + except Exception: + log.exception("kia.putHTTP: HTTP error") + raise + + if response.status_code == 200 or response.status_code == 204: + return response.text + else: + try: + response_dict = json.loads(response.text) + if response.status_code == 408: + error_string = "[" + response_dict['resCode'] + "] " + \ + response_dict['resMsg'] + else: + error_string = "[" + response_dict['errCode'] + "] " + \ + response_dict['errMsg'] + except Exception: + error_string = "[XXXX] Unidentified Error" + log.exception("kia.putHTTP:Request failed") + + log.error("kia.putHTTP:Request failed, StatusCode: " + + str(response.status_code) + ', Error: ' + error_string) + raise RuntimeError + + return "" + + +def deleteHTTP(url: str = "", headers: str = "", cookies: str = "", + timeout: int = 30) -> None: + try: + response = requests.delete(url, headers=headers, cookies=cookies, + timeout=timeout) + except Exception: + log.exception("kia.deleteHTTP: HTTP error: " + response) + raise + + return + + +def postHTTP(url: str = "", data: Union[str, dict] = "", + headers: str = "", cookies: str = "", timeout: int = 30, + allow_redirects: bool = True) -> str: + global last_cookies + global last_url + + try: + if isinstance(data, dict): + response = requests.post(url, json=data, headers=headers, + cookies=cookies, timeout=timeout, + allow_redirects=allow_redirects) + else: + response = requests.post(url, data=data, headers=headers, + cookies=cookies, timeout=timeout, + allow_redirects=allow_redirects) + except Exception: + log.exception("kia.postHTTP: HTTP error") + raise + + if response.status_code == 200 or response.status_code == 204: + last_url = response.url + return response.text + elif response.status_code == 302: + return response.headers['Location'] + else: + try: + response_dict = json.loads(response.text) + if response.status_code == 408: + error_string = "[" + response_dict['resCode'] + "] " + \ + response_dict['resMsg'] + else: + error_string = "[" + response_dict['errCode'] + "] " + \ + response_dict['errMsg'] + except Exception: + error_string = "[XXXX] Unidentified Error" + log.exception("kia.postHTTP:Request failed") + + log.error("kia.postHTTP:Request failed, StatusCode: " + + str(response.status_code) + ', Error: ' + error_string) + raise RuntimeError + + return "" + + +def getHTTPCookies(url: str = "") -> dict: + try: + session = requests.Session() + response = session.get(url) + except Exception: + log.exception("kia.getHTTPCookies: HTTP error") + raise + + if response.status_code == 200: + cookies = session.cookies.get_dict() + else: + log.error("kia.getHTTPCookies: Receiving cookies failed, StatusCode:" + + " " + str(response.status_code)) + raise RuntimeError + + return cookies + +# ---------- token management ---------- + + +def getUserHash(user_id: str, password: str) -> str: + try: + account = user_id + ':' + password + hash = hashlib.md5(account.encode()).hexdigest() + except Exception: + log.exception("kia.getUserHash: hash error") + raise + + return hash + + +def loadToken(user_id: str, password: str, vehicle: int) -> dict: + try: + token_file = str(RAMDISK_PATH) + "/soc_kia_vehicle" + \ + str(vehicle) + "_token" + with open(token_file, 'r', encoding='utf-8') as f: + token = json.loads(f.read()) + except Exception: + log.exception("kia.loadToken: token file error: ") + token = { + "userHash": "" + } + pass + + try: + if token["userHash"] != getUserHash(user_id, password): + log.debug("kia.loadToken: account data changed") + token = { + "userHash": "", + "deviceId": "", + "accessToken": "", + "gcmVehicleId": "", + "refreshToken": "", + "gcmClientId": "", + "tokenType": "" + } + except Exception: + log.exception("kia.loadToken: token error") + raise + + return token + + +def saveToken(user_id: str, password: str, vehicle: int, token: dict) -> None: + try: + token["userHash"] = getUserHash(user_id, password) + token_file = str(RAMDISK_PATH) + "/soc_kia_vehicle" + \ + str(vehicle) + "_token" + with open(token_file, 'w', encoding='utf-8') as f: + f.write(json.dumps(token)) + except Exception: + log.exception("kia.saveToken: token could not be saved") + raise + +# ---------- authentication ---------- + + +def getCookies(brand: str) -> dict: + log.info("Kia/Hyundai: Create Login-session") + + try: + url = getString("base_url", brand) + \ + '/api/v1/user/oauth2/authorize?' + \ + 'response_type=code&state=test&client_id=' + \ + getString("client_id", brand) + '&redirect_uri=' + \ + getString("base_url", brand) + '/api/v1/user/oauth2/redirect' + cookies = getHTTPCookies(url) + + url = getString("base_url", brand) + '/api/v1/user/session' + getHTTP(url=url, cookies=cookies) + + url = getString("base_url", brand) + '/api/v1/user/language' + headers = {'Content-type': 'application/json'} + data = {"lang": "en"} + response = postHTTP(url=url, data=data, + headers=headers, cookies=cookies) + + url = getString("base_url", brand) + '/api/v1/user/session' + deleteHTTP(url=url, cookies=cookies) + except Exception: + log.exception("kia.getCookies: " + response) + raise + + return cookies + + +def getDeviceId(brand: str) -> dict: + log.info("Kia/Hyundai: Requesting device ids") + + token = {} + + try: + token["gcmClientId"] = str(uuid.uuid4()) + token["gcmVehicleId"] = str(uuid.uuid4()) + + url = getString("base_url", brand) + \ + '/api/v1/spa/notifications/register' + data = { + "pushRegId": getString("gcm_sender_id", brand), + "pushType": "GCM", + "uuid": str(uuid.uuid4()) + } + headers = { + 'Authorization': '', + 'Ccsp-Device-Id': '', + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Content-type': 'application/json; charset=UTF-8', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'Keep-Alive', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = postHTTP(url=url, data=data, headers=headers) + + response_dict = json.loads(response) + token["deviceId"] = response_dict['resMsg']['deviceId'] + + log.debug("Kia/Hyundai: DeviceId = " + token["deviceId"][:8] + "[...]") + except Exception: + log.exception("kia.getDeviceId: Request device id failed: " + + response) + raise + + log.info("Sending VersionInfo") + try: + url = getString("base_url", brand) + '/api/v1/spa/devices/version' + + data = { + "teleType": 'none', + "appVer": '2.1.9', + "buildVer": '7.1.2', + "phoneType": 'SM-G988N', + "osType": 'android', + "osVer": '7.1.2' + } + headers = { + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Content-type': 'application/json; charset=UTF-8', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'Keep-Alive', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = postHTTP(url=url, data=data, headers=headers) + except Exception: + log.exception("kia.getDeviceId: Set version info failed: " + + response) + raise + + token["userHash"] = "" + token["tokenType"] = "" + token["accessToken"] = "" + token["refreshToken"] = "" + + return token + + +def getAuthCode(username: str, password: str, brand: str, + cookies: dict) -> str: + global last_cookies + + log.info("Kia/Hyundai: Sending username/password") + + try: + url = getString("base_url", brand) + '/api/v1/user/integrationinfo' + headers = {'Content-type': 'application/json'} + response = getHTTP(url=url, headers=headers, cookies=cookies) + + response_dict = json.loads(response) + user_id = response_dict['userId'] + service_id = response_dict['serviceId'] + log.debug("Kia/Hyundai: UserId = " + user_id[:8] + "[...]") + log.debug("Kia/Hyundai: ServiceId = " + service_id[:8] + "[...]") + + url = 'https://eu-account.' + brand + '.com/auth/realms/eu' + brand + \ + 'idm/protocol/openid-connect/auth?client_id=' + \ + getString("auth_client_id", brand) + \ + '&scope=openid%20profile%20email%20phone&response_type=code&' + \ + 'hkid_session_reset=true&redirect_uri=' + \ + getString("base_url", brand) + '/api/v1/user/integration/' + \ + 'redirect/login&ui_locales=en&state=' + \ + service_id + ':' + user_id + headers = {} + response = getHTTP(url=url, headers=headers, cookies=cookies) + + left = response.find('action="') + 8 + right = response.find('"', left) + url = response[left:right].replace('&', '&') + data = urlparse.urlencode({'username': username, 'password': password, + 'credentialId': ''}) + headers = { + 'Content-type': 'application/x-www-form-urlencoded', + 'User-Agent': 'Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus ' + + 'Build/JRO03C) AppleWebKit/535.19 (KHTML, ' + + 'like Gecko) Chrome/18.0.1025.166 Mobile ' + + 'Safari/535.19_CCS_APP_AOS' + } + cookies['AUTH_SESSION_ID'] = last_cookies['AUTH_SESSION_ID'] + response = postHTTP(url=url, data=data, headers=headers, + cookies=cookies, allow_redirects=False) + + url = response + response = getHTTP(url=url, cookies=cookies, allow_redirects=True) + + url = getString("base_url", brand) + '/api/v1/user/silentsignin' + headers = {'Content-type': 'text/plain;charset=UTF-8'} + data = {'intUserId': ""} + response = postHTTP(url=url, data=data, headers=headers, + cookies=cookies, allow_redirects=False) + response_dict = json.loads(response) + response_url = response_dict['redirectUrl'] + parsed = urlparse.urlparse(response_url) + auth_code = ''.join(parse_qs(parsed.query)['code']) + except Exception: + log.exception("kia.getAuthCode: Login failed: " + response) + raise + + log.debug("Kia/Hyundai: AuthCode = " + auth_code[:8] + "[...]") + + return auth_code + + +def getAuthToken(auth_code: str, token: dict, brand: str) -> dict: + log.info("Kia/Hyundai: Requesting access token") + + try: + url = getString("base_url", brand) + '/api/v1/user/oauth2/token' + data = 'client_id=' + getString("client_id", brand) + \ + '&grant_type=authorization_code&code=' + \ + auth_code + '&redirect_uri=' + getString("base_url", brand) + \ + '%2Fapi%2Fv1%2Fuser%2Foauth2%2Fredirect' + headers = { + 'Authorization': getString("basic_token", brand), + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Content-type': 'application/x-www-form-urlencoded', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = postHTTP(url=url, headers=headers, data=data) + + access_token = json.loads(response) + token["tokenType"] = access_token["token_type"] + token["accessToken"] = access_token["access_token"] + token["refreshToken"] = access_token["refresh_token"] + + except Exception: + log.exception("kia.getAuthToken: Login failed: " + response) + raise + + log.debug("Kia/Hyundai: AuthToken = " + token["accessToken"][:8] + "[...]") + + return token + + +def registerDevice(token: dict, brand: str) -> None: + log.info("Kia/Hyundai: Registering DeviceId") + + try: + url = getString("base_url", brand) + '/api/v1/spa/notifications/' + \ + token["deviceId"] + '/register' + data = {} + headers = { + 'Authorization': token["tokenType"] + ' ' + token["accessToken"], + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Content-Length': '0', + 'Host': getString("host", brand), + 'Connection': 'Keep-Alive', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = postHTTP(url=url, data=data, headers=headers) + except Exception: + log.exception("kia.getAuthToken: Login failed: " + response) + raise + + return + + +def requestToken(user_id: str, password: str, brand: str) -> dict: + log.info("Kia/Hyundai: Token request starting") + + try: + cookies = getCookies(brand) + token = getDeviceId(brand) + auth_code = getAuthCode(user_id, password, brand, cookies) + token = getAuthToken(auth_code, token, brand) + token["userHash"] = getUserHash(user_id, password) + registerDevice(token, brand) + except Exception: + log.exception("kia.requestToken: ") + raise + + return token + + +def refreshToken(token: dict, brand: str) -> dict: + log.info("Kia/Hyundai: Token refresh starting") + + try: + url = getString("base_url", brand) + '/api/v1/user/oauth2/token' + data = 'client_id=' + getString("client_id", brand) + \ + '&grant_type=refresh_token&refresh_token=' + \ + token["refreshToken"] + \ + '&redirect_uri=' + getString("base_url", brand) + \ + '%2Fapi%2Fv1%2Fuser%2Foauth2%2Fredirect' + headers = { + 'Authorization': getString("basic_token", brand), + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Content-type': 'application/x-www-form-urlencoded', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + + response = postHTTP(url=url, headers=headers, data=data) + + token_new = json.loads(response) + token["tokenType"] = token_new["token_type"] + token["accessToken"] = token_new["access_token"] + + except Exception: + log.exception("kia.refreshToken: refresh token error: " + + response) + raise + + log.debug("kia.refreshToken: New access token = " + + token["accessToken"][:8] + "...") + + return token + + +def getControlToken(pin: str, token: dict, brand: str) -> str: + log.info("Kia/Hyundai: Sending PIN") + + try: + url = getString("base_url", brand) + '/api/v1/user/pin' + data = {"deviceId": token["deviceId"], "pin": pin} + headers = { + 'Authorization': token["tokenType"] + ' ' + token["accessToken"], + 'Content-type': 'application/json;charset=UTF-8', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12' + } + response = putHTTP(url=url, data=data, headers=headers) + + response_dict = json.loads(response) + control_token = 'Bearer ' + response_dict['controlToken'] + except Exception: + log.exception("kia.getControlToken: Sending PIN error: " + + response) + raise + + log.debug("kia.refreshToken: control token = " + + control_token[7:15] + "...") + + return control_token + +# ---------- API functions ---------- + + +def getVehicleId(vin: str, token: dict, brand: str) -> str: + log.info("Kia/Hyundai: Requesting vehicle list") + + try: + url = getString("base_url", brand) + '/api/v1/spa/vehicles' + headers = { + 'Authorization': token["tokenType"] + ' ' + token["accessToken"], + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = getHTTP(url=url, headers=headers) + + vehicle_id = "" + response_dict = json.loads(response) + for vehicle in response_dict['resMsg']['vehicles']: + if vehicle['vin'] == vin: + vehicle_id = vehicle['vehicleId'] + vehicle_name = vehicle['nickname'] + + if vehicle_id == "": + log.error("Kia/Hyundai: VIN " + vin + " unknown") + raise + + except Exception: + log.exception("kia.getVehicleId: error: " + response) + raise + + log.debug("kia.getVehicleId: VehicleId = " + vehicle_id[:8] + + "... (" + vehicle_name + ")") + + return vehicle_id + + +def doPrewakeup(vehicle_id: str, token: dict, brand: str) -> None: + log.info("Kia/Hyundai: Triggering Pre-Wakeup") + + try: + url = getString("base_url", brand) + '/api/v1/spa/vehicles/' +\ + vehicle_id + '/control/engine' + data = {"action": "prewakeup", "deviceId": token["deviceId"]} + headers = { + 'Authorization': token["tokenType"] + ' ' + token["accessToken"], + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'offset': '2', + 'Content-Type': 'application/json; charset=UTF-8', + 'Content-Length': str(len(data)), + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = postHTTP(url=url, data=data, headers=headers, timeout=125) + except Exception: + log.exception("kia.doPrewakeup: error: " + response) + raise + + return + + +def getStatusFull(vehicle_id: str, control_token: str, + token: dict, brand: str) -> CarState: + log.info("Kia/Hyundai: Triggering Update") + + try: + url = getString("base_url", brand) + '/api/v2/spa/vehicles/' + \ + vehicle_id + '/ccs2/carstatus' + headers = { + 'Authorization': control_token, + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'offset': '2', + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = getHTTP(url=url, headers=headers, timeout=125) + except Exception: + log.exception("kia.getStatusFull: triggering update error: " + + response) + raise + + log.info("Kia/Hyundai: Waiting 130 seconds") + time.sleep(130) + + log.info("Kia/Hyundai: Receiving status") + + try: + url = getString("base_url", brand) + '/api/v1/spa/vehicles/' + \ + vehicle_id + '/ccs2/carstatus/latest' + headers = { + 'Authorization': token["tokenType"] + ' ' + token["accessToken"], + 'Ccsp-Device-Id': token["deviceId"], + 'Ccsp-Service-Id': getString("client_id", brand), + 'Ccsp-Application-Id': getString("app_id", brand), + 'Clientid': token["gcmClientId"], + 'Vehicleid': token["gcmVehicleId"], + 'Ccuccs2protocolsupport': '0', + 'Offset': '2', + 'Host': getString("host", brand), + 'Connection': 'close', + 'Accept-Encoding': 'gzip, deflate', + 'User-Agent': 'okhttp/3.12.12', + 'Stamp': getStamp(brand) + } + response = getHTTP(url=url, headers=headers) + response_dict = json.loads(response) + + soc = int(response_dict['resMsg']['state']['Vehicle']['Green'] + ['BatteryManagement']['BatteryRemain']['Ratio']) + range = float(response_dict['resMsg']['state']['Vehicle']['Drivetrain'] + ['FuelSystem']['DTE']['Total']) + + except Exception: + log.exception("kia.getStatusFull: receiving update error: " + + response) + raise + + return CarState(soc, range) + +# ---------- main function ---------- + + +def fetch_soc(user_id: str, password: str, pin: str, + vin: str, vehicle: int) -> CarState: + + log.info("Kia/Hyundai: Update starting") + + try: + brand = getBrand(vin) + token = loadToken(user_id, password, vehicle) + if token["accessToken"] == "": + token = requestToken(user_id, password, brand) + else: + token = refreshToken(token, brand) + saveToken(user_id, password, vehicle, token) + except Exception: + log.exception("kia.fetch_soc: ") + raise + + try: + vehicle_id = getVehicleId(vin, token, brand) + doPrewakeup(vehicle_id, token, brand) + control_token = getControlToken(pin, token, brand) + soc_state = getStatusFull(vehicle_id, control_token, token, brand) + except Exception: + log.exception("kia.fetch_soc: ") + raise + + return soc_state diff --git a/packages/modules/vehicles/kia/config.py b/packages/modules/vehicles/kia/config.py new file mode 100644 index 0000000000..8277209c3e --- /dev/null +++ b/packages/modules/vehicles/kia/config.py @@ -0,0 +1,21 @@ +from typing import Optional + + +class KIAConfiguration: + def __init__(self, user_id: Optional[str] = None, password: Optional[str] = None, + pin: Optional[str] = None, vin: Optional[str] = None): + + self.user_id = user_id + self.password = password + self.pin = pin + self.vin = vin + + +class KIA: + def __init__(self, + name: str = "KIA / Hyundai (experimental)", + type: str = "kia", + configuration: KIAConfiguration = None) -> None: + self.name = name + self.type = type + self.configuration = configuration or KIAConfiguration() diff --git a/packages/modules/vehicles/kia/soc.py b/packages/modules/vehicles/kia/soc.py new file mode 100644 index 0000000000..c00a04051e --- /dev/null +++ b/packages/modules/vehicles/kia/soc.py @@ -0,0 +1,43 @@ +from typing import List + +import logging + +from helpermodules.cli import run_using_positional_cli_args +from modules.common import store +from modules.common.abstract_device import DeviceDescriptor +from modules.common.abstract_soc import SocUpdateData +from modules.common.component_state import CarState +from modules.common.configurable_vehicle import ConfigurableVehicle +from modules.vehicles.kia import api +from modules.vehicles.kia.config import KIA, KIAConfiguration + + +log = logging.getLogger(__name__) + + +def create_vehicle(vehicle_config: KIA, vehicle: int): + def updater(soc_update_data: SocUpdateData) -> CarState: + return api.fetch_soc( + vehicle_config.configuration.user_id, + vehicle_config.configuration.password, + vehicle_config.configuration.pin, + vehicle_config.configuration.vin, + vehicle) + return ConfigurableVehicle(vehicle_config=vehicle_config, component_updater=updater, vehicle=vehicle) + + +def kia_update(user_id: str, password: str, pin: str, vin: str, charge_point: int): + vehicle_config = KIA(configuration=KIAConfiguration(charge_point, user_id, password, pin, vin)) + store.get_car_value_store(charge_point).store.set(api.fetch_soc( + vehicle_config.configuration.user_id, + vehicle_config.configuration.password, + vehicle_config.configuration.pin, + vehicle_config.configuration.vin, + charge_point)) + + +def main(argv: List[str]): + run_using_positional_cli_args(kia_update, argv) + + +device_descriptor = DeviceDescriptor(configuration_factory=KIA) From 8b793cad48441d482d948376f03e2c416c674c3a Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:30:25 +0200 Subject: [PATCH 029/121] name threads (#1018) * name threads * fix test --- .../control/chargepoint/chargepoint_state_update.py | 2 +- packages/control/phase_switch.py | 2 +- packages/control/process.py | 2 +- packages/main.py | 10 +++++----- .../internal_chargepoint_handler.py | 6 ++++-- packages/modules/loadvars.py | 6 +++--- packages/modules/update_soc.py | 4 ++-- packages/modules/update_soc_test.py | 4 ++-- 8 files changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/control/chargepoint/chargepoint_state_update.py b/packages/control/chargepoint/chargepoint_state_update.py index 3590174b91..4da7490743 100644 --- a/packages/control/chargepoint/chargepoint_state_update.py +++ b/packages/control/chargepoint/chargepoint_state_update.py @@ -27,7 +27,7 @@ def __init__(self, self.ev_data = ev_data self.ev_charge_template_data = ev_charge_template_data self.ev_template_data = ev_template_data - Thread(target=self.update, args=()).start() + Thread(target=self.update, args=(), name=f"ChargepointStateUpdate cp {index}").start() def update(self): self.event_global_data_initialized.wait() diff --git a/packages/control/phase_switch.py b/packages/control/phase_switch.py index 705a16cd69..687f610300 100644 --- a/packages/control/phase_switch.py +++ b/packages/control/phase_switch.py @@ -31,7 +31,7 @@ def thread_phase_switch(cp) -> None: args=(cp.chargepoint_module, cp.data.set.charging_ev_data, cp.data.get.charge_state), - name=f"cp{cp.chargepoint_module.config.id}") + name=f"phase switch cp{cp.chargepoint_module.config.id}") phase_switch_threads["thread_cp"+str(cp.num)].start() log.debug("Thread zur Phasenumschaltung an LP"+str(cp.num)+" gestartet.") except Exception: diff --git a/packages/control/process.py b/packages/control/process.py index 807b7c928e..72f1ecda1a 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -120,4 +120,4 @@ def _update_state(self, chargepoint: chargepoint.Chargepoint) -> None: def _start_charging(self, chargepoint: chargepoint.Chargepoint) -> threading.Thread: return threading.Thread(target=chargepoint.chargepoint_module.set_current, args=(chargepoint.data.set.current,), - name=f"cp{chargepoint.chargepoint_module.config.id}") + name=f"set current cp{chargepoint.chargepoint_module.config.id}") diff --git a/packages/main.py b/packages/main.py index d5dded6be5..9c3d6f6904 100755 --- a/packages/main.py +++ b/packages/main.py @@ -95,14 +95,14 @@ def handler5Min(self): if not sub.heartbeat: log.error("Heartbeat für Subdata nicht zurückgesetzt.") sub.disconnect() - Thread(target=sub.sub_topics, args=()).start() + Thread(target=sub.sub_topics, args=(), name="Subdata").start() else: sub.heartbeat = False if not set.heartbeat: log.error("Heartbeat für Setdata nicht zurückgesetzt.") set.disconnect() - Thread(target=set.set_data, args=()).start() + Thread(target=set.set_data, args=(), name="Setdata").start() else: set.heartbeat = False @@ -205,9 +205,9 @@ def schedule_jobs(): event_soc, event_jobs_running) comm = command.Command(event_command_completed) - t_sub = Thread(target=sub.sub_topics, args=()) - t_set = Thread(target=set.set_data, args=()) - t_comm = Thread(target=comm.sub_commands, args=()) + t_sub = Thread(target=sub.sub_topics, args=(), name="Subdata") + t_set = Thread(target=set.set_data, args=(), name="Setdata") + t_comm = Thread(target=comm.sub_commands, args=(), name="Commands") t_internal_chargepoint = Thread(target=general_internal_chargepoint_handler.handler, args=(), name="Internal Chargepoint") if hasattr(rfid0, "input_device"): diff --git a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py index a2619c1758..afbe95ba58 100644 --- a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py +++ b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py @@ -105,13 +105,15 @@ def update_state(self, data: InternalChargepointHandlerData, heartbeat_expired: def __thread_phase_switch(self, phases_to_use: int) -> None: self.phase_switch_thread = threading.Thread( - target=self.cp_module.perform_phase_switch, args=(phases_to_use, 5)) + target=self.cp_module.perform_phase_switch, args=(phases_to_use, 5), + name=f"perform phase switch {self.cp_module.local_charge_point_num}") self.phase_switch_thread.start() log.debug("Thread zur Phasenumschaltung an LP"+str(self.cp_module.local_charge_point_num)+" gestartet.") def __thread_cp_interruption(self, duration: int) -> None: self.cp_interruption_thread = threading.Thread( - target=self.cp_module.perform_cp_interruption, args=(duration,)) + target=self.cp_module.perform_cp_interruption, args=(duration,), + name=f"perform cp interruption cp{self.cp_module.local_charge_point_num}") self.cp_interruption_thread.start() log.debug("Thread zur CP-Unterbrechung an LP"+str(self.cp_module.local_charge_point_num)+" gestartet.") Pub().pub( diff --git a/packages/modules/loadvars.py b/packages/modules/loadvars.py index 65c31e64e9..2a36721025 100644 --- a/packages/modules/loadvars.py +++ b/packages/modules/loadvars.py @@ -51,7 +51,7 @@ def _set_values(self) -> List[str]: for cp in data.data.cp_data.values(): try: modules_threads.append(threading.Thread(target=cp.chargepoint_module.get_values, - args=(), name=f"cp{cp.chargepoint_module.config.id}")) + args=(), name=f"set values cp{cp.chargepoint_module.config.id}")) except Exception: log.exception(f"Fehler im loadvars-Modul bei Element {cp.num}") return thread_handler(modules_threads, data.data.general_data.data.control_interval/3) @@ -68,7 +68,7 @@ def _update_values_of_level(self, elements, not_finished_threads: List[str]) -> modules_threads.append(threading.Thread( target=update_values, args=(chargepoint.chargepoint_module,), - name=f"cp{chargepoint.chargepoint_module.config.id}")) + name=f"update values cp{chargepoint.chargepoint_module.config.id}")) else: component = get_component_obj_by_id(element["id"], not_finished_threads) if component is None: @@ -94,7 +94,7 @@ def _get_general(self) -> List[threading.Thread]: # 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.configured: - threads.append(threading.Thread(target=ripple_control_receiver.read, args=())) + threads.append(threading.Thread(target=ripple_control_receiver.read, args=(), name="get general")) except Exception: log.exception("Fehler im loadvars-Modul") finally: diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py index f14075fca2..0f3e4480d3 100644 --- a/packages/modules/update_soc.py +++ b/packages/modules/update_soc.py @@ -59,10 +59,10 @@ def _get_threads(self) -> Tuple[List[Thread], List[Thread]]: # Hersteller bei zu häufigen Abfragen Accounts sperren. Pub().pub(f"openWB/set/vehicle/{ev.num}/get/soc_timestamp", timecheck.create_timestamp()) threads_update.append(Thread(target=ev.soc_module.update, - args=(soc_update_data,), name=f"soc_ev{ev.num}")) + args=(soc_update_data,), name=f"fetch soc_ev{ev.num}")) if hasattr(ev.soc_module, "store"): threads_store.append(Thread(target=ev.soc_module.store.update, - args=(), name=f"soc_ev{ev.num}")) + args=(), name=f"store soc_ev{ev.num}")) except Exception: log.exception("Fehler im update_soc-Modul") return threads_update, threads_store diff --git a/packages/modules/update_soc_test.py b/packages/modules/update_soc_test.py index 0cb973825b..7f96040cf8 100644 --- a/packages/modules/update_soc_test.py +++ b/packages/modules/update_soc_test.py @@ -55,8 +55,8 @@ def test_get_ev_state(ev_num: int, "soc_module, force_soc_update, soc_interval_expired, expected_threads_update", [ pytest.param(None, False, False, [], id="soc module none"), - pytest.param(Mock(spec=create_vehicle, update=Mock()), False, True, ["soc_ev0"], id="interval expired"), - pytest.param(Mock(spec=create_vehicle, update=Mock()), True, False, ["soc_ev0"], id="force soc update"), + pytest.param(Mock(spec=create_vehicle, update=Mock()), False, True, ["fetch soc_ev0"], id="interval expired"), + pytest.param(Mock(spec=create_vehicle, update=Mock()), True, False, ["fetch soc_ev0"], id="force soc update"), pytest.param(Mock(spec=create_vehicle, update=Mock()), False, False, [], id="no soc request needed"), ] ) From 0b4c1dd03fbe009936510b0d6efc300082595d3c Mon Sep 17 00:00:00 2001 From: Martin Rinas Date: Fri, 4 Aug 2023 11:23:27 +0200 Subject: [PATCH 030/121] Onedrive_Backup (#968) * initial version * update requirements.txt * draft 2 * retrieve scope from config * prepare config * save persistent token cahe * save token cache * auth flow, token cache * minor flake8 fixes * clean up comments * flake8, refactor * Update publish_docs_to_wiki.yml * move logic into api.py * formatting * Revert "Update publish_docs_to_wiki.yml" This reverts commit 19a983586b0c146bcb977fb8271b943e83ff8149. * flake8 * add required module to workflow * remove sharepoint-onedrive SDK --- .github/workflows/github-actions-python.yml | 2 +- packages/helpermodules/command.py | 27 +++ .../backup_clouds/onedrive/__init__.py | 0 .../modules/backup_clouds/onedrive/api.py | 170 ++++++++++++++ .../backup_clouds/onedrive/backup_cloud.py | 42 ++++ .../modules/backup_clouds/onedrive/config.py | 30 +++ .../onedrive/msdrive/constants.py | 3 + .../backup_clouds/onedrive/msdrive/drive.py | 208 ++++++++++++++++++ .../onedrive/msdrive/exceptions.py | 14 ++ .../onedrive/msdrive/onedrive.py | 30 +++ requirements.txt | 1 + 11 files changed, 526 insertions(+), 1 deletion(-) create mode 100644 packages/modules/backup_clouds/onedrive/__init__.py create mode 100644 packages/modules/backup_clouds/onedrive/api.py create mode 100644 packages/modules/backup_clouds/onedrive/backup_cloud.py create mode 100644 packages/modules/backup_clouds/onedrive/config.py create mode 100644 packages/modules/backup_clouds/onedrive/msdrive/constants.py create mode 100644 packages/modules/backup_clouds/onedrive/msdrive/drive.py create mode 100644 packages/modules/backup_clouds/onedrive/msdrive/exceptions.py create mode 100644 packages/modules/backup_clouds/onedrive/msdrive/onedrive.py diff --git a/.github/workflows/github-actions-python.yml b/.github/workflows/github-actions-python.yml index 1d2a1020b4..7dc26fc5ee 100644 --- a/.github/workflows/github-actions-python.yml +++ b/.github/workflows/github-actions-python.yml @@ -14,7 +14,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install flake8 pytest paho-mqtt requests-mock jq pyjwt==2.6.0 bs4 pkce typing_extensions python-dateutil==2.8.2 + pip install flake8 pytest paho-mqtt requests-mock jq pyjwt==2.6.0 bs4 pkce typing_extensions python-dateutil==2.8.2 msal - name: Flake8 with annotations in packages folder uses: TrueBrain/actions-flake8@v2.1 with: diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 83a4502f4d..6b20eab52c 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -10,8 +10,10 @@ import traceback from pathlib import Path import paho.mqtt.client as mqtt + from control.chargepoint import chargepoint from control.chargepoint.chargepoint_template import get_autolock_plan_default, get_chargepoint_template_default +from modules.backup_clouds.onedrive.api import generateMSALAuthCode, retrieveMSALTokens from helpermodules import measurement_log from helpermodules.broker import InternalBrokerClient @@ -28,6 +30,7 @@ import dataclass_utils from modules.common.configurable_vehicle import IntervalConfig + log = logging.getLogger(__name__) @@ -695,6 +698,30 @@ def restoreBackup(self, connection_id: str, payload: dict) -> None: f'Restore-Status: {result.returncode}
Meldung: {result.stdout.decode("utf-8")}', MessageType.ERROR) + 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: + 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) + pub_user_message(payload, connection_id, result["message"], result["MessageType"]) + + 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: + 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) + pub_user_message(payload, connection_id, result["message"], result["MessageType"]) + def factoryReset(self, connection_id: str, payload: dict) -> None: Path(Path(__file__).resolve().parents[2] / 'data' / 'restore' / 'factory_reset').touch() pub_user_message(payload, connection_id, diff --git a/packages/modules/backup_clouds/onedrive/__init__.py b/packages/modules/backup_clouds/onedrive/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/backup_clouds/onedrive/api.py b/packages/modules/backup_clouds/onedrive/api.py new file mode 100644 index 0000000000..51e85dfdb1 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/api.py @@ -0,0 +1,170 @@ +import logging +import pickle +import json +import paho.mqtt.publish as publish +import msal +import base64 + +from msal import PublicClientApplication +from helpermodules.messaging import MessageType +from modules.backup_clouds.onedrive.config import OneDriveBackupCloud, OneDriveBackupCloudConfiguration + + +log = logging.getLogger(__name__) + + +def encode_str_base64(string: str) -> str: + string_bytes = string.encode("ascii") + string_base64_bytes = base64.b64encode(string_bytes) + string_base64_string = string_base64_bytes.decode("ascii") + return string_base64_string + + +def save_tokencache(config: OneDriveBackupCloudConfiguration, cache: str) -> None: + # encode cache to base64 and save to config + log.debug("saving updated tokencache to config") + config.persistent_tokencache = encode_str_base64(cache) + + # construct full configuartion object for cloud backup + backupcloud = OneDriveBackupCloud() + backupcloud.configuration = config + backupcloud_to_mqtt = json.dumps(backupcloud.__dict__, default=lambda o: o.__dict__) + log.debug("Config to MQTT:" + str(backupcloud_to_mqtt)) + + publish.single("openWB/set/system/backup_cloud/config", backupcloud_to_mqtt, retain=True, hostname="localhost") + + +def get_tokens(config: OneDriveBackupCloudConfiguration) -> dict: + result = None + cache = msal.SerializableTokenCache() + + if config.persistent_tokencache: + cache.deserialize(base64.b64decode(config.persistent_tokencache)) + else: + raise Exception("No tokencache found, please re-configure and re-authorize access Cloud backup settings.") + + # Create a public client application with msal + log.debug("creating MSAL public client application") + app = msal.PublicClientApplication(client_id=config.clientID, authority=config.authority, token_cache=cache) + + log.debug("getting accounts") + accounts = app.get_accounts() + if accounts: + chosen = accounts[0] # assume that we only will have a single account in cache + log.debug("selected account " + str(chosen["username"])) + # Now let's try to find a token in cache for this account + result = app.acquire_token_silent(scopes=config.scope, account=chosen) + else: + raise Exception("No matching account found,please re-configure and re-authorize access Cloud backup settings.") + + log.debug("done acquring tokens") + if not result: # We have no token for this account, so the end user shall sign-in + raise Exception("No token found, please re-configure and re-authorize access Cloud backup settings.") + + if "access_token" in result: + log.debug("access token retrieved") + save_tokencache(config=config, cache=cache.serialize()) + else: + # Print the error + raise Exception("Error retrieving access token", result.get("error"), result.get("error_description")) + return result + + +def generateMSALAuthCode(cloudbackup: OneDriveBackupCloud) -> dict: + """ startet den Authentifizierungsprozess für MSAL (Microsoft Authentication Library) für Onedrive Backup + und speichert den AuthCode in der Konfiguration""" + result = dict( + message="", + MessageType=MessageType.SUCCESS + ) + + if cloudbackup is None: + result["message"] = """Es ist keine Backup-Cloud konfiguriert. + Bitte Konfiguration speichern und erneut versuchen.
""" + result["MessageType"] = MessageType.WARNING + return result + + # Create a public client application with msal + app = PublicClientApplication( + client_id=cloudbackup.configuration.clientID, + authority=cloudbackup.configuration.authority + ) + + # create device flow to obtain auth code + flow = app.initiate_device_flow(cloudbackup.configuration.scope) + if "user_code" not in flow: + raise Exception( + "Fail to create device flow. Err: %s" % json.dumps(flow, indent=4)) + + flow["expires_at"] = 0 # Mark it as expired immediately to prevent + pickleString = str(pickle.dumps(flow), encoding='latin1') + + cloudbackup.configuration.flow = str(pickleString) + cloudbackup.configuration.authcode = flow["user_code"] + cloudbackup.configuration.authurl = flow["verification_uri"] + cloudbackupconfig_to_mqtt = json.dumps(cloudbackup.__dict__, default=lambda o: o.__dict__) + + publish.single( + "openWB/set/system/backup_cloud/config", cloudbackupconfig_to_mqtt, retain=True, hostname="localhost" + ) + + result["message"] = """Authorisierung gestartet, bitte den Link öffen, Code eingeben, + und Zugang authorisieren. Anschließend Zugangsberechtigung abrufen.""" + result["MessageType"] = MessageType.SUCCESS + + return result + + +def retrieveMSALTokens(cloudbackup: OneDriveBackupCloud) -> dict: + result = dict( + message="", + MessageType=MessageType.SUCCESS + ) + if cloudbackup is None: + result["message"] = """Es ist keine Backup-Cloud konfiguriert. + Bitte Konfiguration speichern und erneut versuchen.
""" + result["MessageType"] = MessageType.WARNING + return result + + # Create a public client application with msal + tokens = None + cache = msal.SerializableTokenCache() + app = PublicClientApplication(client_id=cloudbackup.configuration.clientID, + authority=cloudbackup.configuration.authority, token_cache=cache) + + f = cloudbackup.configuration.flow + if f is None: + result["message"] = """Es ist wurde kein Auth-Code erstellt. + Bitte zunächst Auth-Code erstellen und den Authorisierungsprozess beenden.
""" + result["MessageType"] = MessageType.WARNING + return result + flow = pickle.loads(bytes(f, encoding='latin1')) + + tokens = app.acquire_token_by_device_flow(flow) + # https://msal-python.readthedocs.io/en/latest/#msal.PublicClientApplication.acquire_token_by_device_flow + # https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code + # Check if the token was obtained successfully + if "access_token" in tokens: + log.debug("retrieved access token") + + # Tokens retrieved, remove auth codes as they are single use only. + cloudbackup.configuration.flow = None + cloudbackup.configuration.authcode = None + cloudbackup.configuration.authurl = None + + # save tokens + save_tokencache(config=cloudbackup.configuration, cache=cache.serialize()) + result["message"] = """Zugangsberechtigung erfolgreich abgerufen.""" + result["MessageType"] = MessageType.SUCCESS + return result + + else: + result["message"] = """"Es konnten keine Tokens abgerufen werden: + %s
%s""" % (tokens.get("error"), tokens.get("error_description")) + result["MessageType"] = MessageType.WARNING + '''pub_user_message(payload, connection_id, + "Es konnten keine Tokens abgerufen werden: %s
%s" + % (result.get("error"), result.get("error_description")), MessageType.WARNING + ) + ''' + return result diff --git a/packages/modules/backup_clouds/onedrive/backup_cloud.py b/packages/modules/backup_clouds/onedrive/backup_cloud.py new file mode 100644 index 0000000000..8f2a4d5f96 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/backup_cloud.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +import logging +import os +import pathlib + +from modules.backup_clouds.onedrive.msdrive.onedrive import OneDrive +from modules.backup_clouds.onedrive.api import get_tokens +from modules.backup_clouds.onedrive.config import OneDriveBackupCloud, OneDriveBackupCloudConfiguration +from modules.common.abstract_device import DeviceDescriptor +from modules.common.configurable_backup_cloud import ConfigurableBackupCloud + + +log = logging.getLogger(__name__) + + +def upload_backup(config: OneDriveBackupCloudConfiguration, backup_filename: str, backup_file: bytes) -> None: + # upload a single file to onedrive useing credentials from OneDriveBackupCloudConfiguration + # https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_put_content?view=odsp-graph-online + tokens = get_tokens(config) # type: ignore + log.debug("token object retrieved, access_token: %s", tokens.__len__) + log.debug("instantiate OneDrive connection") + onedrive = OneDrive(access_token=tokens["access_token"]) + + localbackup = os.path.join(pathlib.Path().resolve(), 'data', 'backup', backup_filename) + remote_filename = backup_filename.replace(':', '-') # file won't upload when name contains ':' + + if not config.backuppath.endswith("/"): + log.debug("fixing missing ending slash in backuppath: " + config.backuppath) + config.backuppath = config.backuppath + "/" + + log.debug("uploading file %s to OneDrive", backup_filename) + onedrive.upload_item(item_path=(config.backuppath+remote_filename), file_path=localbackup, + conflict_behavior="replace") + + +def create_backup_cloud(config: OneDriveBackupCloud): + def updater(backup_filename: str, backup_file: bytes): + upload_backup(config.configuration, backup_filename, backup_file) + return ConfigurableBackupCloud(config=config, component_updater=updater) + + +device_descriptor = DeviceDescriptor(configuration_factory=OneDriveBackupCloud) diff --git a/packages/modules/backup_clouds/onedrive/config.py b/packages/modules/backup_clouds/onedrive/config.py new file mode 100644 index 0000000000..c221cafe34 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/config.py @@ -0,0 +1,30 @@ +from typing import Optional + + +class OneDriveBackupCloudConfiguration: + def __init__(self, backuppath: str = "/openWB/Backup/", + persistent_tokencache: Optional[str] = None, + authurl: Optional[str] = None, + authcode: Optional[str] = None, + scope: Optional[list] = ["https://graph.microsoft.com/Files.ReadWrite"], + authority: Optional[str] = "https://login.microsoftonline.com/consumers/", + clientID: Optional[str] = "e529d8d2-3b0f-4ae4-b2ba-2d9a2bba55b2", + flow: Optional[str] = None) -> None: + self.backuppath = backuppath + self.persistent_tokencache = persistent_tokencache + self.authurl = authurl + self.authcode = authcode + self.scope = scope + self.authority = authority + self.clientID = clientID + self.flow = flow + + +class OneDriveBackupCloud: + def __init__(self, + name: str = "OneDrive", + type: str = "onedrive", + configuration: OneDriveBackupCloudConfiguration = None) -> None: + self.name = name + self.type = type + self.configuration = configuration or OneDriveBackupCloudConfiguration() diff --git a/packages/modules/backup_clouds/onedrive/msdrive/constants.py b/packages/modules/backup_clouds/onedrive/msdrive/constants.py new file mode 100644 index 0000000000..16bace4960 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/msdrive/constants.py @@ -0,0 +1,3 @@ +BASE_GRAPH_URL = "https://graph.microsoft.com/v1.0" +SIMPLE_UPLOAD_MAX_SIZE = 4000000 # 4MB +CHUNK_UPLOAD_MAX_SIZE = 3276800 # ~3MB must be divisible by 327680 bytes diff --git a/packages/modules/backup_clouds/onedrive/msdrive/drive.py b/packages/modules/backup_clouds/onedrive/msdrive/drive.py new file mode 100644 index 0000000000..e2b8addf22 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/msdrive/drive.py @@ -0,0 +1,208 @@ +import os +from .exceptions import InvalidAccessToken, ItemNotFound, RateLimited, DriveException +from requests import Session +from abc import ABC, abstractmethod +from urllib3.util.retry import Retry +from requests.adapters import HTTPAdapter +from requests.exceptions import HTTPError +from .constants import SIMPLE_UPLOAD_MAX_SIZE, CHUNK_UPLOAD_MAX_SIZE + + +class MSDrive(ABC): + """Abstract class for accessing files stored in OneDrive and SharePoint using the Microsoft Graph API.""" + + def __init__(self, access_token: str) -> None: + """Class constructor that accepts a Microsoft access token for use with the API + + Args: + access_token (str): The access token + """ + self.access_token = access_token + + def get_item_data(self, **kwargs) -> dict: + """Get metadata for a DriveItem. + + Args: + drive_id (str): The drive ID (only for SharePoint) + item_id (str): [EITHER] The item ID + item_path (str): [EITHER] The item path + + Returns: + dict: JSON representation of a DriveItem resource + """ + r = self._session().get(self._get_drive_item_url(**kwargs)) + + return r.json() + + def list_items(self, **kwargs) -> dict: + """List the DriveItems in a specific folder path. + + Args: + drive_id (str): The drive ID (only for SharePoint) + folder_path (str): The folder path (or leave out for root) + + Returns: + dict: JSON representation of a collection of DriveItem resources + """ + r = self._session().get(self._get_drive_children_url(**kwargs)) + + return r.json() + + def download_item(self, **kwargs) -> None: + """Download a DriveItem file to a specific local path. + + Args: + drive_id (str): The drive ID (only for SharePoint) + item_id (str): [EITHER] The item ID + item_path (str): [EITHER] The item path + file_path (str): Local path to save the file to (e.g. /tmp/blah.csv) + """ + if not kwargs.get("file_path"): + raise ValueError("Missing file_path argument") + + data = self.get_item_data(**kwargs) + + with Session().get(data["@microsoft.graph.downloadUrl"], stream=True) as r: + r.raise_for_status() + + with open(kwargs["file_path"], "wb") as f: + for chunk in r.iter_content(chunk_size=8192): + f.write(chunk) + + def upload_item(self, **kwargs) -> None: + """Upload a local file to an existing or new DriveItem. + + Specify the item_path for a new file. + Specify the item_path or item_id for an existing file. + + Args: + drive_id (str): The drive ID (only for SharePoint) + item_id (str): [EITHER] The item ID + item_path (str): [EITHER] The item path + file_path (str): Local path to upload the file from (e.g. /tmp/blah.csv) + """ + if not kwargs.get("file_path"): + raise ValueError("Missing file_path argument") + + file_size = os.stat(kwargs["file_path"]).st_size + + if file_size <= SIMPLE_UPLOAD_MAX_SIZE: + self._upload_item_small(**kwargs) + else: + self._upload_item_large(**kwargs) + + @abstractmethod + def _get_drive_item_url(self, **kwargs) -> str: + raise NotImplementedError("Must be overridden") + + @abstractmethod + def _get_drive_children_url(self, **kwargs) -> str: + raise NotImplementedError("Must be overridden") + + def _session(self) -> Session: + s = Session() + s.hooks["response"] = [self.raise_error_hook] + s.headers.update({"Authorization": "Bearer " + self.access_token}) + + return s + + def _session_upload(self) -> Session: + retries = Retry( + total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504] + ) + + adapter = HTTPAdapter(max_retries=retries) + + s = Session() + s.mount("http://", adapter) + s.mount("https://", adapter) + s.hooks["response"] = [self.raise_error_hook] + + return s + + def _upload_item_small(self, **kwargs) -> None: + url = self._get_drive_item_url(**kwargs) + file_data = open(kwargs["file_path"], "rb") + + if kwargs.get("item_id"): + url += "/content" + else: + url += ":/content" + + try: + self._session().put(url, data=file_data) + finally: + file_data.close() + + def _upload_item_large(self, **kwargs) -> None: + upload_url = self._get_upload_url(**kwargs) + file_size = os.stat(kwargs["file_path"]).st_size + + with open(kwargs["file_path"], "rb") as f: + chunk_size = CHUNK_UPLOAD_MAX_SIZE + chunk_number = file_size // chunk_size + chunk_leftover = file_size - chunk_size * chunk_number + chunk_data = f.read(chunk_size) + i = 0 + + while chunk_data: + start_index = i * chunk_size + end_index = start_index + chunk_size + + if i == chunk_number: + end_index = start_index + chunk_leftover + + s = self._session_upload() + + # Setting the header with the appropriate chunk data location in the file + headers = { + "Content-Length": str(chunk_size), + "Content-Range": "bytes {}-{}/{}".format( + start_index, end_index - 1, file_size + ), + } + + s.headers.update(headers) + s.put(upload_url, data=chunk_data) + + i = i + 1 + chunk_data = f.read(chunk_size) + + def _get_upload_url(self, **kwargs) -> str: + url = self._get_drive_item_url(**kwargs) + + if kwargs.get("item_id"): + url += "/createUploadSession" + else: + url += ":/createUploadSession" + + r = self._session().post(url) + + return r.json()["uploadUrl"] + + def raise_error_hook(self, resp, *args, **kwargs) -> None: + try: + resp.raise_for_status() + except HTTPError as err: + self._handle_http_error(err) + + def _handle_http_error(self, err: HTTPError) -> None: + if err.response is None: + raise err + + try: + body = err.response.json() + message = body["error"]["message"] + except Exception: + raise err + + if err.response.status_code == 401: + raise InvalidAccessToken(message) + + if err.response.status_code == 404: + raise ItemNotFound(message) + + if err.response.status_code == 429: + raise RateLimited(message) + + raise DriveException(message) diff --git a/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py b/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py new file mode 100644 index 0000000000..8537d69d3d --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py @@ -0,0 +1,14 @@ +class DriveException(Exception): + """There was an ambiguous exception that occurred""" + + +class InvalidAccessToken(DriveException): + """Invalid access token""" + + +class ItemNotFound(DriveException): + """Item not found""" + + +class RateLimited(DriveException): + """Rate limit exceeded""" diff --git a/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py b/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py new file mode 100644 index 0000000000..ff75a980c5 --- /dev/null +++ b/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py @@ -0,0 +1,30 @@ +from .drive import MSDrive +from urllib.parse import quote +from .constants import BASE_GRAPH_URL + + +class OneDrive(MSDrive): + """Class for accessing DriveItems stored in OneDrive. + + A DriveItem resource represents a file, folder, or other item stored in a drive. + + All file system objects in OneDrive are returned as DriveItem resources (see https://bit.ly/3HAAxrh). + + """ + + def _get_drive_item_url(self, **kwargs) -> str: + if kwargs.get("item_id"): + return f"{BASE_GRAPH_URL}/me/drive/items/{kwargs['item_id']}" + + if kwargs.get("item_path"): + path = quote(kwargs["item_path"].lstrip("/")) + return f"{BASE_GRAPH_URL}/me/drive/root:/{path}" + + raise ValueError("Missing argument: item_id or item_path") + + def _get_drive_children_url(self, **kwargs) -> str: + if not kwargs.get("folder_path"): + return f"{BASE_GRAPH_URL}/me/drive/root/children" + else: + path = quote(kwargs["folder_path"].lstrip("/").rstrip("/")) + return f"{BASE_GRAPH_URL}/me/drive/root:/{path}:/children" diff --git a/requirements.txt b/requirements.txt index 2e658cfa68..ccc649f713 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,5 @@ pkce==1.0.3 # skodaconnect==1.3.4 evdev==1.5.0 #telnetlib3==2.0.2 +msal==1.22.0 python-dateutil==2.8.2 From 36b0bb8d0c168aceaaa4d7437c48379cbbb119f4 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:07:46 +0200 Subject: [PATCH 031/121] add solarmax bat (#1044) * add solarmax bat * fix modbus id --- packages/helpermodules/update_config.py | 23 +++++- packages/modules/devices/solarmax/bat.py | 35 ++++++++ packages/modules/devices/solarmax/config.py | 21 ++++- packages/modules/devices/solarmax/device.py | 79 ++++++++----------- packages/modules/devices/solarmax/inverter.py | 15 ++-- 5 files changed, 109 insertions(+), 64 deletions(-) create mode 100644 packages/modules/devices/solarmax/bat.py diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index bcc8da55b9..db47aab82d 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -24,7 +24,7 @@ class UpdateConfig: - DATASTORE_VERSION = 17 + DATASTORE_VERSION = 18 valid_topic = [ "^openWB/bat/config/configured$", "^openWB/bat/set/charging_power_left$", @@ -445,9 +445,10 @@ def update(self): self.__pub_missing_defaults() self.__update_version() self.__solve_breaking_changes() - Pub().pub("openWB/set/system/update_config_completed", True) except Exception: log.exception("Fehler beim Prüfen des Brokers.") + finally: + Pub().pub("openWB/set/system/update_config_completed", True) def on_connect(self, client: MqttClient, userdata, flags: dict, rc: int): """ connect to broker and subscribe to set topics @@ -793,3 +794,21 @@ def upgrade_datastore_16(self) -> None: payload["configuration"].update({"position_evu": False}) Pub().pub(topic.replace("openWB/", "openWB/set/"), payload) Pub().pub("openWB/system/datastore_version", 17) + + def upgrade_datastore_17(self) -> None: + for topic_device, payload in self.all_received_topics.items(): + if re.search("openWB/system/device/[0-9]+/config", topic_device) is not None: + payload_device = decode_payload(payload) + index = get_index(topic_device) + if payload_device["type"] == "solarmax": + for topic_component, payload_component in self.all_received_topics.items(): + if re.search(f"^openWB/system/device/{index}/component/[0-9]+/config$", + topic_component) is not None: + payload_inverter = decode_payload(payload_component) + if payload_inverter["type"] == "inverter": + payload_inverter["configuration"]["modbus_id"] = payload_device["configuration"][ + "modbus_id"] + payload_device["configuration"].pop("modbus_id") + Pub().pub(topic_device.replace("openWB/", "openWB/set/"), payload_device) + Pub().pub(topic_component.replace("openWB/", "openWB/set/"), payload_inverter) + Pub().pub("openWB/system/datastore_version", 18) diff --git a/packages/modules/devices/solarmax/bat.py b/packages/modules/devices/solarmax/bat.py new file mode 100644 index 0000000000..ad5d93cbdf --- /dev/null +++ b/packages/modules/devices/solarmax/bat.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +from dataclass_utils import dataclass_from_dict +from modules.common.component_state import BatState +from modules.common.component_type import ComponentDescriptor +from modules.common.fault_state import ComponentInfo +from modules.common.modbus import ModbusDataType, ModbusTcpClient_ +from modules.common.simcount import SimCounter +from modules.common.store import get_bat_value_store +from modules.devices.solarmax.config import SolarmaxBatSetup + + +class SolarmaxBat: + def __init__(self, device_id: int, component_config: SolarmaxBatSetup) -> None: + self.__device_id = device_id + self.component_config = dataclass_from_dict(SolarmaxBatSetup, component_config) + self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher") + self.store = get_bat_value_store(self.component_config.id) + self.component_info = ComponentInfo.from_component_config(self.component_config) + + def update(self, client: ModbusTcpClient_) -> None: + unit = self.component_config.configuration.modbus_id + power = client.read_holding_registers(114, ModbusDataType.INT_32, unit=unit) + soc = client.read_holding_registers(122, ModbusDataType.INT_16, unit=unit) + imported, exported = self.sim_counter.sim_count(power) + + bat_state = BatState( + power=power, + soc=soc, + imported=imported, + exported=exported + ) + self.store.set(bat_state) + + +component_descriptor = ComponentDescriptor(configuration_factory=SolarmaxBatSetup) diff --git a/packages/modules/devices/solarmax/config.py b/packages/modules/devices/solarmax/config.py index ec62a33ad4..38984784b9 100644 --- a/packages/modules/devices/solarmax/config.py +++ b/packages/modules/devices/solarmax/config.py @@ -4,9 +4,8 @@ class SolarmaxConfiguration: - def __init__(self, ip_address: Optional[str] = None, modbus_id: int = 1): + def __init__(self, ip_address: Optional[str] = None): self.ip_address = ip_address - self.modbus_id = modbus_id class Solarmax: @@ -21,9 +20,23 @@ def __init__(self, self.configuration = configuration or SolarmaxConfiguration() +class SolarmaxBatConfiguration: + def __init__(self, modbus_id: int = 1): + self.modbus_id = modbus_id + + +class SolarmaxBatSetup(ComponentSetup[SolarmaxBatConfiguration]): + def __init__(self, + name: str = "Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Speicher", + type: str = "bat", + id: int = 0, + configuration: SolarmaxBatConfiguration = None) -> None: + super().__init__(name, type, id, configuration or SolarmaxBatConfiguration()) + + class SolarmaxInverterConfiguration: - def __init__(self): - pass + def __init__(self, modbus_id: int = 1): + self.modbus_id = modbus_id class SolarmaxInverterSetup(ComponentSetup[SolarmaxInverterConfiguration]): diff --git a/packages/modules/devices/solarmax/device.py b/packages/modules/devices/solarmax/device.py index fff2755dbe..6e936c3b4e 100644 --- a/packages/modules/devices/solarmax/device.py +++ b/packages/modules/devices/solarmax/device.py @@ -1,61 +1,44 @@ #!/usr/bin/env python3 import logging -from typing import Dict, Optional, List, Union +from typing import Iterable, Optional, List, Union -from dataclass_utils import dataclass_from_dict from helpermodules.cli import run_using_positional_cli_args from modules.common import modbus -from modules.common.abstract_device import AbstractDevice, DeviceDescriptor +from modules.common.abstract_device import DeviceDescriptor from modules.common.component_context import SingleComponentUpdateContext +from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater from modules.devices.solarmax import inverter -from modules.devices.solarmax.config import Solarmax, SolarmaxConfiguration +from modules.devices.solarmax.bat import SolarmaxBat +from modules.devices.solarmax.config import Solarmax, SolarmaxBatSetup, SolarmaxConfiguration, SolarmaxInverterSetup log = logging.getLogger(__name__) -class Device(AbstractDevice): - COMPONENT_TYPE_TO_CLASS = { - "inverter": inverter.SolarmaxInverter - } - - def __init__(self, device_config: Union[Dict, Solarmax]) -> None: - self.components = {} - try: - self.device_config = dataclass_from_dict(Solarmax, device_config) - self.client = modbus.ModbusTcpClient_(self.device_config.configuration.ip_address, 502) - except Exception: - log.exception("Fehler im Modul "+self.device_config.name) - - def add_component(self, component_config: dict) -> None: - if isinstance(component_config, Dict): - component_type = component_config["type"] - else: - component_type = component_config.type - component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[ - component_type].component_descriptor.configuration_factory, component_config) - if component_type in self.COMPONENT_TYPE_TO_CLASS: - self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type]( - self.device_config.id, - component_config, self.client, - self.device_config.configuration.modbus_id)) - else: - raise Exception( - "illegal component type " + component_type + ". Allowed values: " + - ','.join(self.COMPONENT_TYPE_TO_CLASS.keys()) - ) - - def update(self) -> None: - log.debug("Start device reading " + str(self.components)) - if self.components: - for component in self.components: - # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden. - with SingleComponentUpdateContext(self.components[component].component_info): - self.components[component].update() - else: - log.warning( - self.device_config.name + - ": Es konnten keine Werte gelesen werden, da noch keine oder zu viele Komponenten konfiguriert wurden." - ) +def create_device(device_config: Solarmax): + def create_bat_component(component_config: SolarmaxBatSetup): + return SolarmaxBat(device_config.id, component_config) + + def create_inverter_component(component_config: SolarmaxInverterSetup): + return inverter.SolarmaxInverter(device_config.id, component_config) + + def update_components(components: Iterable[Union[SolarmaxBat, inverter.SolarmaxInverter]]): + with client as c: + for component in components: + with SingleComponentUpdateContext(component.component_info): + component.update(c) + + try: + client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, 502) + except Exception: + log.exception("Fehler in create_device") + return ConfigurableDevice( + device_config=device_config, + component_factory=ComponentFactoryByType( + bat=create_bat_component, + inverter=create_inverter_component, + ), + component_updater=MultiComponentUpdater(update_components) + ) COMPONENT_TYPE_TO_MODULE = { @@ -64,7 +47,7 @@ def update(self) -> None: def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None: - dev = Device(Solarmax(configuration=SolarmaxConfiguration(ip_address=ip_address))) + dev = create_device(Solarmax(configuration=SolarmaxConfiguration(ip_address=ip_address))) if component_type in COMPONENT_TYPE_TO_MODULE: component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory() else: diff --git a/packages/modules/devices/solarmax/inverter.py b/packages/modules/devices/solarmax/inverter.py index f30c674f72..5ef8106cf1 100644 --- a/packages/modules/devices/solarmax/inverter.py +++ b/packages/modules/devices/solarmax/inverter.py @@ -2,11 +2,10 @@ from typing import Dict, Union from dataclass_utils import dataclass_from_dict -from modules.common import modbus from modules.common.component_state import InverterState from modules.common.component_type import ComponentDescriptor from modules.common.fault_state import ComponentInfo -from modules.common.modbus import ModbusDataType +from modules.common.modbus import ModbusDataType, ModbusTcpClient_ from modules.common.simcount import SimCounter from modules.common.store import get_inverter_value_store from modules.devices.solarmax.config import SolarmaxInverterSetup @@ -15,20 +14,16 @@ class SolarmaxInverter: def __init__(self, device_id: int, - component_config: Union[Dict, SolarmaxInverterSetup], - tcp_client: modbus.ModbusTcpClient_, - modbus_id: int) -> None: + component_config: Union[Dict, SolarmaxInverterSetup]) -> None: self.__device_id = device_id - self.__modbus_id = modbus_id self.component_config = dataclass_from_dict(SolarmaxInverterSetup, component_config) - self.__tcp_client = tcp_client self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="pv") self.store = get_inverter_value_store(self.component_config.id) self.component_info = ComponentInfo.from_component_config(self.component_config) - def update(self) -> None: - with self.__tcp_client: - power = self.__tcp_client.read_holding_registers(4151, ModbusDataType.UINT_32, unit=self.__modbus_id) * -1 + def update(self, client: ModbusTcpClient_) -> None: + power = client.read_holding_registers(4151, ModbusDataType.UINT_32, + unit=self.component_config.configuration.modbus_id) * -1 power = power / 10 _, exported = self.sim_counter.sim_count(power) inverter_state = InverterState( From 8c0d572f468ed3aa0cc82424c8c5906b29dbd834 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:13:15 +0200 Subject: [PATCH 032/121] build UI (#1076) * build UI * build UI --- .../assets/{ChargeLog-8486f3f0.js => ChargeLog-7096367e.js} | 2 +- ...allation-ecd34d4b.js => ChargePointInstallation-480980cc.js} | 2 +- web/settings/assets/{Chart-2e592cfa.js => Chart-b2368220.js} | 2 +- .../assets/{CloudConfig-245430dd.js => CloudConfig-64f3ecdf.js} | 2 +- web/settings/assets/DataManagement-7e37f4db.js | 1 - web/settings/assets/DataManagement-b69f05c7.js | 1 + .../assets/{DebugConfig-97534b00.js => DebugConfig-7d67d5b1.js} | 2 +- ...ChargeConfig-2884a640.js => GeneralChargeConfig-10b74be1.js} | 2 +- .../{GeneralConfig-6e2e217f.js => GeneralConfig-e079d68c.js} | 2 +- ...nstallation-b9cdb0ac.js => HardwareInstallation-226d64a1.js} | 2 +- ...ChargeConfig-8445d7dd.js => InstantChargeConfig-0c4a2b3b.js} | 2 +- .../{LegalSettings-f12a8565.js => LegalSettings-917626a5.js} | 2 +- ...ementConfig-9e2d8ef2.js => LoadManagementConfig-23370c56.js} | 2 +- ...qttBridgeConfig-7e5a8200.js => MqttBridgeConfig-a0ff7a48.js} | 2 +- ...nalComponents-70122f32.js => OptionalComponents-38363e80.js} | 2 +- .../{PVChargeConfig-f39042dc.js => PVChargeConfig-d52a8b34.js} | 2 +- ...argeConfig-f33eb982.js => ScheduledChargeConfig-3958a406.js} | 2 +- web/settings/assets/{Status-9c9cadc2.js => Status-eed60d97.js} | 2 +- .../assets/{Support-ce000ca7.js => Support-61d51453.js} | 2 +- web/settings/assets/{System-4d62d64a.js => System-a0d6988e.js} | 2 +- .../{TestingStore-b310024f.js => TestingStore-8c0031f9.js} | 2 +- ...imeChargeConfig-41698cb7.js => TimeChargeConfig-e6a22d8f.js} | 2 +- web/settings/assets/VehicleConfig-77586afa.js | 1 + web/settings/assets/VehicleConfig-a3954f94.js | 1 - web/settings/assets/backup_cloud-b6c73543.js | 1 + web/settings/assets/bat-6a774d77.js | 1 + web/settings/assets/counter-4b4b6fcb.js | 1 + web/settings/assets/counter-816bc001.js | 1 + web/settings/assets/counter-af7b14cb.js | 1 - web/settings/assets/counter-eb5d92d4.js | 1 - web/settings/assets/device-0503e27c.js | 1 - web/settings/assets/device-0e74116d.js | 1 + web/settings/assets/device-1f86752d.js | 1 + web/settings/assets/device-cea5a89a.js | 1 - web/settings/assets/{index-2148ad21.js => index-f73a9131.js} | 2 +- web/settings/assets/inverter-5378e193.js | 1 + web/settings/assets/inverter-c9434684.js | 1 - web/settings/assets/vehicle-c5a65e75.js | 1 + .../assets/{vehicle-de6be3c0.js => vehicle-c96cd902.js} | 2 +- web/settings/index.html | 2 +- 40 files changed, 33 insertions(+), 30 deletions(-) rename web/settings/assets/{ChargeLog-8486f3f0.js => ChargeLog-7096367e.js} (99%) rename web/settings/assets/{ChargePointInstallation-ecd34d4b.js => ChargePointInstallation-480980cc.js} (60%) rename web/settings/assets/{Chart-2e592cfa.js => Chart-b2368220.js} (99%) rename web/settings/assets/{CloudConfig-245430dd.js => CloudConfig-64f3ecdf.js} (99%) delete mode 100644 web/settings/assets/DataManagement-7e37f4db.js create mode 100644 web/settings/assets/DataManagement-b69f05c7.js rename web/settings/assets/{DebugConfig-97534b00.js => DebugConfig-7d67d5b1.js} (98%) rename web/settings/assets/{GeneralChargeConfig-2884a640.js => GeneralChargeConfig-10b74be1.js} (97%) rename web/settings/assets/{GeneralConfig-6e2e217f.js => GeneralConfig-e079d68c.js} (99%) rename web/settings/assets/{HardwareInstallation-b9cdb0ac.js => HardwareInstallation-226d64a1.js} (52%) rename web/settings/assets/{InstantChargeConfig-8445d7dd.js => InstantChargeConfig-0c4a2b3b.js} (96%) rename web/settings/assets/{LegalSettings-f12a8565.js => LegalSettings-917626a5.js} (97%) rename web/settings/assets/{LoadManagementConfig-9e2d8ef2.js => LoadManagementConfig-23370c56.js} (99%) rename web/settings/assets/{MqttBridgeConfig-7e5a8200.js => MqttBridgeConfig-a0ff7a48.js} (99%) rename web/settings/assets/{OptionalComponents-70122f32.js => OptionalComponents-38363e80.js} (99%) rename web/settings/assets/{PVChargeConfig-f39042dc.js => PVChargeConfig-d52a8b34.js} (99%) rename web/settings/assets/{ScheduledChargeConfig-f33eb982.js => ScheduledChargeConfig-3958a406.js} (97%) rename web/settings/assets/{Status-9c9cadc2.js => Status-eed60d97.js} (99%) rename web/settings/assets/{Support-ce000ca7.js => Support-61d51453.js} (98%) rename web/settings/assets/{System-4d62d64a.js => System-a0d6988e.js} (99%) rename web/settings/assets/{TestingStore-b310024f.js => TestingStore-8c0031f9.js} (99%) rename web/settings/assets/{TimeChargeConfig-41698cb7.js => TimeChargeConfig-e6a22d8f.js} (96%) create mode 100644 web/settings/assets/VehicleConfig-77586afa.js delete mode 100644 web/settings/assets/VehicleConfig-a3954f94.js create mode 100644 web/settings/assets/backup_cloud-b6c73543.js create mode 100644 web/settings/assets/bat-6a774d77.js create mode 100644 web/settings/assets/counter-4b4b6fcb.js create mode 100644 web/settings/assets/counter-816bc001.js delete mode 100644 web/settings/assets/counter-af7b14cb.js delete mode 100644 web/settings/assets/counter-eb5d92d4.js delete mode 100644 web/settings/assets/device-0503e27c.js create mode 100644 web/settings/assets/device-0e74116d.js create mode 100644 web/settings/assets/device-1f86752d.js delete mode 100644 web/settings/assets/device-cea5a89a.js rename web/settings/assets/{index-2148ad21.js => index-f73a9131.js} (97%) create mode 100644 web/settings/assets/inverter-5378e193.js delete mode 100644 web/settings/assets/inverter-c9434684.js create mode 100644 web/settings/assets/vehicle-c5a65e75.js rename web/settings/assets/{vehicle-de6be3c0.js => vehicle-c96cd902.js} (98%) diff --git a/web/settings/assets/ChargeLog-8486f3f0.js b/web/settings/assets/ChargeLog-7096367e.js similarity index 99% rename from web/settings/assets/ChargeLog-8486f3f0.js rename to web/settings/assets/ChargeLog-7096367e.js index cf351d4484..7f5192ad76 100644 --- a/web/settings/assets/ChargeLog-8486f3f0.js +++ b/web/settings/assets/ChargeLog-7096367e.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-396ff0d4.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-6e5b23b4.js";import{C as N}from"./index-2148ad21.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-396ff0d4.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-6e5b23b4.js";import{C as N}from"./index-f73a9131.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-ecd34d4b.js b/web/settings/assets/ChargePointInstallation-480980cc.js similarity index 60% rename from web/settings/assets/ChargePointInstallation-ecd34d4b.js rename to web/settings/assets/ChargePointInstallation-480980cc.js index 1a612d89a2..743d3e6afc 100644 --- a/web/settings/assets/ChargePointInstallation-ecd34d4b.js +++ b/web/settings/assets/ChargePointInstallation-480980cc.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-396ff0d4.js";import{_ as L,C as oe}from"./index-2148ad21.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dc724714.js"),["assets/chargePoint-dc724714.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-83c5fa5d.js"),["assets/chargePoint-83c5fa5d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-10dd26b7.js"),["assets/chargePoint-10dd26b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-04c96676.js"),["assets/chargePoint-04c96676.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-7389b890.js"),["assets/chargePoint-7389b890.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-84db1946.js"),["assets/chargePoint-84db1946.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-022bb19a.js"),["assets/commands-022bb19a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 der Wallbox-Zuleitung",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-396ff0d4.js";import{_ as L,C as oe}from"./index-f73a9131.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dc724714.js"),["assets/chargePoint-dc724714.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-83c5fa5d.js"),["assets/chargePoint-83c5fa5d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-10dd26b7.js"),["assets/chargePoint-10dd26b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-04c96676.js"),["assets/chargePoint-04c96676.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-7389b890.js"),["assets/chargePoint-7389b890.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-84db1946.js"),["assets/chargePoint-84db1946.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-022bb19a.js"),["assets/commands-022bb19a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-2e592cfa.js b/web/settings/assets/Chart-b2368220.js similarity index 99% rename from web/settings/assets/Chart-2e592cfa.js rename to web/settings/assets/Chart-b2368220.js index 96129fbd58..7043816f49 100644 --- a/web/settings/assets/Chart-2e592cfa.js +++ b/web/settings/assets/Chart-b2368220.js @@ -1 +1 @@ -import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-2148ad21.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-5f622c20.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; +import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-f73a9131.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-5f622c20.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; diff --git a/web/settings/assets/CloudConfig-245430dd.js b/web/settings/assets/CloudConfig-64f3ecdf.js similarity index 99% rename from web/settings/assets/CloudConfig-245430dd.js rename to web/settings/assets/CloudConfig-64f3ecdf.js index 345fa45c74..0f4b2b10c5 100644 --- a/web/settings/assets/CloudConfig-245430dd.js +++ b/web/settings/assets/CloudConfig-64f3ecdf.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-2148ad21.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>s.updateConfiguration(h,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),q({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>R(()=>import("./backup_cloud-f9884751.js"),["assets/backup_cloud-f9884751.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,i,s){return f(),W(E(s.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>s.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,H,j,A);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:P,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let i=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let i=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${i}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let i=new FormData;i.append("file",e),i.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",i,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,i,s){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),T=d("openwb-base-button-input"),O=d("openwb-backup-cloud-proxy"),x=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:l(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=u=>this.warningAcknowledged=u)},null,8,["modelValue"])]),_:1}),i.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ie,[o(h,null,{default:l(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:l(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:l(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=u=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:l(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:l(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=u=>s.updateSelectedRestoreFile(u))},null,32),n("label",fe,k(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=u=>s.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=u=>s.restoreBackup())},{default:l(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:l(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:l(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=u=>s.updateSelectedBackupCloud(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(T,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=u=>s.sendSystemCommand("createCloudBackup",{}))}),o(O,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=u=>s.updateConfiguration("openWB/system/backup_cloud/config",u))},null,8,["backupCloudType","configuration"])])):D("v-if",!0),o(x,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[8]||(e[8]=u=>t.$emit("save")),onReset:e[9]||(e[9]=u=>t.$emit("reset")),onDefaults:e[10]||(e[10]=u=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",De,[o(m,{subtype:"info"},{default:l(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:l(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[11]||(e[11]=u=>s.updateSelectedDataMigrationFile(u))},null,32),n("label",Me,k(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[12]||(e[12]=u=>s.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:l(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(S,null,F(i.dataMigrationConfig,u=>(f(),_("div",{key:u.sectionName},[o(h,null,{default:l(()=>[a(k(u.sectionName),1)]),_:2},1024),(f(!0),_(S,null,F(u.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:s.getMigrationOptions(b.validTypes),modelValue:i.dataMigrationMapping[b.key],"onUpdate:modelValue":M=>i.dataMigrationMapping[b.key]=M},G({_:2},[b.help?{name:"help",fn:l(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[13]||(e[13]=u=>s.dataMigration())},{default:l(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[14]||(e[14]=u=>s.sendSystemCommand("factoryReset",{}))},{default:l(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(m,{subtype:"danger"},{default:l(()=>[a(" 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})])])):D("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DataManagement-b69f05c7.js b/web/settings/assets/DataManagement-b69f05c7.js new file mode 100644 index 0000000000..b5d04e599b --- /dev/null +++ b/web/settings/assets/DataManagement-b69f05c7.js @@ -0,0 +1 @@ +import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-396ff0d4.js";import{_ as D,C as N}from"./index-f73a9131.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as T,a1 as q,z as S,n as v,G as F,I as W,a2 as G}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f9884751.js"),["assets/backup_cloud-f9884751.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-b6c73543.js"),["assets/backup_cloud-b6c73543.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-97534b00.js b/web/settings/assets/DebugConfig-7d67d5b1.js similarity index 98% rename from web/settings/assets/DebugConfig-97534b00.js rename to web/settings/assets/DebugConfig-7d67d5b1.js index 51b02fc3c8..da20b3ce47 100644 --- a/web/settings/assets/DebugConfig-97534b00.js +++ b/web/settings/assets/DebugConfig-7d67d5b1.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as _}from"./index-2148ad21.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Y as w,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as _}from"./index-f73a9131.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-2884a640.js b/web/settings/assets/GeneralChargeConfig-10b74be1.js similarity index 97% rename from web/settings/assets/GeneralChargeConfig-2884a640.js rename to web/settings/assets/GeneralChargeConfig-10b74be1.js index d2c38ad113..3f131f1c66 100644 --- a/web/settings/assets/GeneralChargeConfig-2884a640.js +++ b/web/settings/assets/GeneralChargeConfig-10b74be1.js @@ -1 +1 @@ -import{C as c}from"./index-2148ad21.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-f73a9131.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-6e2e217f.js b/web/settings/assets/GeneralConfig-e079d68c.js similarity index 99% rename from web/settings/assets/GeneralConfig-6e2e217f.js rename to web/settings/assets/GeneralConfig-e079d68c.js index f1b5cd35ea..8929debb95 100644 --- a/web/settings/assets/GeneralConfig-6e2e217f.js +++ b/web/settings/assets/GeneralConfig-e079d68c.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-2148ad21.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-9c4cb66b.js"),["assets/bat-9c4cb66b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-cd468b50.js"),["assets/counter-cd468b50.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-c21d2035.js"),["assets/inverter-c21d2035.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-7892c6ff.js"),["assets/bat-7892c6ff.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-8142b909.js"),["assets/counter-8142b909.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-12a71401.js"),["assets/external_inverter-12a71401.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-5cf7f4ea.js"),["assets/inverter-5cf7f4ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-6c7e4549.js"),["assets/bat-6c7e4549.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ba947ca5.js"),["assets/counter-ba947ca5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-a17994d5.js"),["assets/counter-a17994d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a2fbbf7f.js"),["assets/inverter-a2fbbf7f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-78371791.js"),["assets/bat-78371791.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-ee7b7fc2.js"),["assets/counter-ee7b7fc2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-114e7859.js"),["assets/external_inverter-114e7859.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-90f3d72b.js"),["assets/inverter-90f3d72b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-75067630.js"),["assets/counter-75067630.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b4097339.js"),["assets/inverter-b4097339.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-b9b268e2.js"),["assets/bat-b9b268e2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-f29aec2b.js"),["assets/counter-f29aec2b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-c87e2737.js"),["assets/inverter-c87e2737.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-bd482ff6.js"),["assets/bat-bd482ff6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-55cbf638.js"),["assets/counter_s0-55cbf638.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-b8d44e45.js"),["assets/counter_sm-b8d44e45.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-7b30173d.js"),["assets/inverter-7b30173d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-34292ed1.js"),["assets/bat-34292ed1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-db44398b.js"),["assets/counter-db44398b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-1d15d663.js"),["assets/inverter-1d15d663.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-e83535a3.js"),["assets/bat-e83535a3.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-cef05356.js"),["assets/counter-cef05356.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-502f629e.js"),["assets/inverter-502f629e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-56e740de.js"),["assets/bat-56e740de.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-1d0f3892.js"),["assets/counter-1d0f3892.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-4cef121f.js"),["assets/inverter-4cef121f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-ea469ce2.js"),["assets/counter-ea469ce2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f32f983a.js"),["assets/bat-f32f983a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c1ba1c51.js"),["assets/counter-c1ba1c51.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c1bf7cde.js"),["assets/inverter-c1bf7cde.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-dc4e356a.js"),["assets/counter-dc4e356a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-0748897a.js"),["assets/inverter-0748897a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-862fe547.js"),["assets/bat-862fe547.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-eb5d92d4.js"),["assets/counter-eb5d92d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-cea5a89a.js"),["assets/device-cea5a89a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-c53f4fbf.js"),["assets/inverter-c53f4fbf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-af7b14cb.js"),["assets/counter-af7b14cb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-012c416a.js"),["assets/inverter-012c416a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-8d465039.js"),["assets/bat-8d465039.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-0a70ba4e.js"),["assets/counter-0a70ba4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-141492ab.js"),["assets/inverter-141492ab.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-ce75f78c.js"),["assets/bat-ce75f78c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-9b94bf71.js"),["assets/counter-9b94bf71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-2cb1f91b.js"),["assets/inverter-2cb1f91b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3a522162.js"),["assets/bat-3a522162.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-b860d161.js"),["assets/bat-b860d161.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-c22cfbf7.js"),["assets/counter-c22cfbf7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-142e36fb.js"),["assets/inverter-142e36fb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-2c2c1739.js"),["assets/bat-2c2c1739.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-26ce225d.js"),["assets/counter-26ce225d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-902f3710.js"),["assets/inverter-902f3710.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1e116570.js"),["assets/inverter-1e116570.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-b60b6e4a.js"),["assets/counter-b60b6e4a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-4355b01b.js"),["assets/inverter-4355b01b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-d1b5bc9e.js"),["assets/counter-d1b5bc9e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-25c50f0a.js"),["assets/inverter-25c50f0a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-a812139b.js"),["assets/bat-a812139b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-7f35a959.js"),["assets/counter-7f35a959.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-1e818ed4.js"),["assets/inverter-1e818ed4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-0dc7df81.js"),["assets/bat-0dc7df81.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d3d1ea3f.js"),["assets/counter-d3d1ea3f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-e4d3cc40.js"),["assets/inverter-e4d3cc40.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-ec186c85.js"),["assets/bat-ec186c85.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-9fa50fa7.js"),["assets/bat-9fa50fa7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-8e5b4e19.js"),["assets/counter-8e5b4e19.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-ebb193da.js"),["assets/inverter-ebb193da.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b9602155.js"),["assets/counter-b9602155.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-0b0f0c4e.js"),["assets/counter-0b0f0c4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-1e83ea2a.js"),["assets/inverter-1e83ea2a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-aea49a4e.js"),["assets/bat-aea49a4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-f1604c00.js"),["assets/bat_smart_energy-f1604c00.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-269f6e9f.js"),["assets/counter-269f6e9f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-b11fd5b4.js"),["assets/inverter-b11fd5b4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-552bb794.js"),["assets/bat-552bb794.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-9fe0373f.js"),["assets/inverter-9fe0373f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-dc28491c.js"),["assets/counter-dc28491c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-3e75383d.js"),["assets/inverter-3e75383d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-56fdc27e.js"),["assets/counter-56fdc27e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-f9804b26.js"),["assets/counter-f9804b26.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-127bad9a.js"),["assets/inverter-127bad9a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-2df223d5.js"),["assets/counter-2df223d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-a66f1636.js"),["assets/inverter-a66f1636.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-e9bd65aa.js"),["assets/bat-e9bd65aa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-15317c83.js"),["assets/counter-15317c83.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-9f25c7b8.js"),["assets/inverter-9f25c7b8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-746d0e2d.js"),["assets/counter-746d0e2d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-cbe3f201.js"),["assets/inverter-cbe3f201.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-8e5275f9.js"),["assets/bat-8e5275f9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-5643a400.js"),["assets/counter-5643a400.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-266d661e.js"),["assets/external_inverter-266d661e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-b1fa892a.js"),["assets/inverter-b1fa892a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-0503e27c.js"),["assets/device-0503e27c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-c9434684.js"),["assets/inverter-c9434684.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-5027e2dc.js"),["assets/bat-5027e2dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-4bfdc2cd.js"),["assets/counter-4bfdc2cd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-eff782b7.js"),["assets/inverter-eff782b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-747ec82c.js"),["assets/bat-747ec82c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-02f588be.js"),["assets/counter-02f588be.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-e45e304e.js"),["assets/inverter-e45e304e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-9cf99a8b.js"),["assets/bat-9cf99a8b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-40527e01.js"),["assets/inverter-40527e01.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-c86a746f.js"),["assets/bat-c86a746f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-f1ea356e.js"),["assets/counter-f1ea356e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-766499df.js"),["assets/inverter-766499df.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-5952b75a.js"),["assets/inverter-5952b75a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-96b30c95.js"),["assets/bat-96b30c95.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-35296ab7.js"),["assets/counter-35296ab7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-238294f2.js"),["assets/inverter-238294f2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-2f620f71.js"),["assets/bat_api-2f620f71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-1de28157.js"),["assets/bat_modbus-1de28157.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-81355be8.js"),["assets/counter-81355be8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-05d57853.js"),["assets/bat-05d57853.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-cc16dae8.js"),["assets/counter-cc16dae8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-7ff062ac.js"),["assets/inverter-7ff062ac.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-347ba16d.js"),["assets/counter-347ba16d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-9db9f949.js"),["assets/counter-9db9f949.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-2cf514ef.js"),["assets/inverter-2cf514ef.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-5231c6c2.js"),["assets/inverter-5231c6c2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-cea5a89a.js"),["assets/device-cea5a89a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-0503e27c.js"),["assets/device-0503e27c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; +import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-396ff0d4.js";import{_ as e,C as X}from"./index-f73a9131.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-9c4cb66b.js"),["assets/bat-9c4cb66b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-cd468b50.js"),["assets/counter-cd468b50.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-c21d2035.js"),["assets/inverter-c21d2035.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-7892c6ff.js"),["assets/bat-7892c6ff.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-8142b909.js"),["assets/counter-8142b909.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-12a71401.js"),["assets/external_inverter-12a71401.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-5cf7f4ea.js"),["assets/inverter-5cf7f4ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-6c7e4549.js"),["assets/bat-6c7e4549.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ba947ca5.js"),["assets/counter-ba947ca5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-a17994d5.js"),["assets/counter-a17994d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a2fbbf7f.js"),["assets/inverter-a2fbbf7f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-78371791.js"),["assets/bat-78371791.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-ee7b7fc2.js"),["assets/counter-ee7b7fc2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-114e7859.js"),["assets/external_inverter-114e7859.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-90f3d72b.js"),["assets/inverter-90f3d72b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-75067630.js"),["assets/counter-75067630.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b4097339.js"),["assets/inverter-b4097339.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-b9b268e2.js"),["assets/bat-b9b268e2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-f29aec2b.js"),["assets/counter-f29aec2b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-c87e2737.js"),["assets/inverter-c87e2737.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-bd482ff6.js"),["assets/bat-bd482ff6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-55cbf638.js"),["assets/counter_s0-55cbf638.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-b8d44e45.js"),["assets/counter_sm-b8d44e45.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-7b30173d.js"),["assets/inverter-7b30173d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-34292ed1.js"),["assets/bat-34292ed1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-db44398b.js"),["assets/counter-db44398b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-1d15d663.js"),["assets/inverter-1d15d663.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-e83535a3.js"),["assets/bat-e83535a3.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-cef05356.js"),["assets/counter-cef05356.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-502f629e.js"),["assets/inverter-502f629e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-56e740de.js"),["assets/bat-56e740de.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-1d0f3892.js"),["assets/counter-1d0f3892.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-4cef121f.js"),["assets/inverter-4cef121f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-ea469ce2.js"),["assets/counter-ea469ce2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f32f983a.js"),["assets/bat-f32f983a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c1ba1c51.js"),["assets/counter-c1ba1c51.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c1bf7cde.js"),["assets/inverter-c1bf7cde.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-dc4e356a.js"),["assets/counter-dc4e356a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-0748897a.js"),["assets/inverter-0748897a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-862fe547.js"),["assets/bat-862fe547.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-4b4b6fcb.js"),["assets/counter-4b4b6fcb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-c53f4fbf.js"),["assets/inverter-c53f4fbf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-816bc001.js"),["assets/counter-816bc001.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-012c416a.js"),["assets/inverter-012c416a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-8d465039.js"),["assets/bat-8d465039.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-0a70ba4e.js"),["assets/counter-0a70ba4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-141492ab.js"),["assets/inverter-141492ab.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-ce75f78c.js"),["assets/bat-ce75f78c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-9b94bf71.js"),["assets/counter-9b94bf71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-2cb1f91b.js"),["assets/inverter-2cb1f91b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3a522162.js"),["assets/bat-3a522162.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-b860d161.js"),["assets/bat-b860d161.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-c22cfbf7.js"),["assets/counter-c22cfbf7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-142e36fb.js"),["assets/inverter-142e36fb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-2c2c1739.js"),["assets/bat-2c2c1739.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-26ce225d.js"),["assets/counter-26ce225d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-902f3710.js"),["assets/inverter-902f3710.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1e116570.js"),["assets/inverter-1e116570.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-b60b6e4a.js"),["assets/counter-b60b6e4a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-4355b01b.js"),["assets/inverter-4355b01b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-d1b5bc9e.js"),["assets/counter-d1b5bc9e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-25c50f0a.js"),["assets/inverter-25c50f0a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-a812139b.js"),["assets/bat-a812139b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-7f35a959.js"),["assets/counter-7f35a959.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-1e818ed4.js"),["assets/inverter-1e818ed4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-0dc7df81.js"),["assets/bat-0dc7df81.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d3d1ea3f.js"),["assets/counter-d3d1ea3f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-e4d3cc40.js"),["assets/inverter-e4d3cc40.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-ec186c85.js"),["assets/bat-ec186c85.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-9fa50fa7.js"),["assets/bat-9fa50fa7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-8e5b4e19.js"),["assets/counter-8e5b4e19.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-ebb193da.js"),["assets/inverter-ebb193da.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b9602155.js"),["assets/counter-b9602155.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-0b0f0c4e.js"),["assets/counter-0b0f0c4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-1e83ea2a.js"),["assets/inverter-1e83ea2a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-aea49a4e.js"),["assets/bat-aea49a4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-f1604c00.js"),["assets/bat_smart_energy-f1604c00.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-269f6e9f.js"),["assets/counter-269f6e9f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-b11fd5b4.js"),["assets/inverter-b11fd5b4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-552bb794.js"),["assets/bat-552bb794.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-9fe0373f.js"),["assets/inverter-9fe0373f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-dc28491c.js"),["assets/counter-dc28491c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-3e75383d.js"),["assets/inverter-3e75383d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-56fdc27e.js"),["assets/counter-56fdc27e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-f9804b26.js"),["assets/counter-f9804b26.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-127bad9a.js"),["assets/inverter-127bad9a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-2df223d5.js"),["assets/counter-2df223d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-a66f1636.js"),["assets/inverter-a66f1636.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-e9bd65aa.js"),["assets/bat-e9bd65aa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-15317c83.js"),["assets/counter-15317c83.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-9f25c7b8.js"),["assets/inverter-9f25c7b8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-746d0e2d.js"),["assets/counter-746d0e2d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-cbe3f201.js"),["assets/inverter-cbe3f201.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-8e5275f9.js"),["assets/bat-8e5275f9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-5643a400.js"),["assets/counter-5643a400.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-266d661e.js"),["assets/external_inverter-266d661e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-b1fa892a.js"),["assets/inverter-b1fa892a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-6a774d77.js"),["assets/bat-6a774d77.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-5378e193.js"),["assets/inverter-5378e193.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-5027e2dc.js"),["assets/bat-5027e2dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-4bfdc2cd.js"),["assets/counter-4bfdc2cd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-eff782b7.js"),["assets/inverter-eff782b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-747ec82c.js"),["assets/bat-747ec82c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-02f588be.js"),["assets/counter-02f588be.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-e45e304e.js"),["assets/inverter-e45e304e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-9cf99a8b.js"),["assets/bat-9cf99a8b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-40527e01.js"),["assets/inverter-40527e01.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-c86a746f.js"),["assets/bat-c86a746f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-f1ea356e.js"),["assets/counter-f1ea356e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-766499df.js"),["assets/inverter-766499df.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-5952b75a.js"),["assets/inverter-5952b75a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-96b30c95.js"),["assets/bat-96b30c95.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-35296ab7.js"),["assets/counter-35296ab7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-238294f2.js"),["assets/inverter-238294f2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-2f620f71.js"),["assets/bat_api-2f620f71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-1de28157.js"),["assets/bat_modbus-1de28157.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-81355be8.js"),["assets/counter-81355be8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-05d57853.js"),["assets/bat-05d57853.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-cc16dae8.js"),["assets/counter-cc16dae8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-7ff062ac.js"),["assets/inverter-7ff062ac.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-347ba16d.js"),["assets/counter-347ba16d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-9db9f949.js"),["assets/counter-9db9f949.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-2cf514ef.js"),["assets/inverter-2cf514ef.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-5231c6c2.js"),["assets/inverter-5231c6c2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-8445d7dd.js b/web/settings/assets/InstantChargeConfig-0c4a2b3b.js similarity index 96% rename from web/settings/assets/InstantChargeConfig-8445d7dd.js rename to web/settings/assets/InstantChargeConfig-0c4a2b3b.js index 58e9fef07d..676041a27a 100644 --- a/web/settings/assets/InstantChargeConfig-8445d7dd.js +++ b/web/settings/assets/InstantChargeConfig-0c4a2b3b.js @@ -1 +1 @@ -import{C as l}from"./index-2148ad21.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-f73a9131.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-f12a8565.js b/web/settings/assets/LegalSettings-917626a5.js similarity index 97% rename from web/settings/assets/LegalSettings-f12a8565.js rename to web/settings/assets/LegalSettings-917626a5.js index f9c9519c18..7d0a090e27 100644 --- a/web/settings/assets/LegalSettings-f12a8565.js +++ b/web/settings/assets/LegalSettings-917626a5.js @@ -1 +1 @@ -import{C as g}from"./index-2148ad21.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-f73a9131.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-9e2d8ef2.js b/web/settings/assets/LoadManagementConfig-23370c56.js similarity index 99% rename from web/settings/assets/LoadManagementConfig-9e2d8ef2.js rename to web/settings/assets/LoadManagementConfig-23370c56.js index 89fa5c34db..1d1a03a382 100644 --- a/web/settings/assets/LoadManagementConfig-9e2d8ef2.js +++ b/web/settings/assets/LoadManagementConfig-23370c56.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as $}from"./index-2148ad21.js";import{S as x}from"./OpenwbSortableList-db92c83c.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as $}from"./index-f73a9131.js";import{S as x}from"./OpenwbSortableList-db92c83c.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-7e5a8200.js b/web/settings/assets/MqttBridgeConfig-a0ff7a48.js similarity index 99% rename from web/settings/assets/MqttBridgeConfig-7e5a8200.js rename to web/settings/assets/MqttBridgeConfig-a0ff7a48.js index bfc84b0fb2..cd02a13ef1 100644 --- a/web/settings/assets/MqttBridgeConfig-7e5a8200.js +++ b/web/settings/assets/MqttBridgeConfig-a0ff7a48.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-396ff0d4.js";import{C as D}from"./index-2148ad21.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-396ff0d4.js";import{C as D}from"./index-f73a9131.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OptionalComponents-70122f32.js b/web/settings/assets/OptionalComponents-38363e80.js similarity index 99% rename from web/settings/assets/OptionalComponents-70122f32.js rename to web/settings/assets/OptionalComponents-38363e80.js index 0a1a74a342..df8aa03a8c 100644 --- a/web/settings/assets/OptionalComponents-70122f32.js +++ b/web/settings/assets/OptionalComponents-38363e80.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-2148ad21.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-8212a288.js"),["assets/displayTheme-8212a288.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-f73a9131.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-8212a288.js"),["assets/displayTheme-8212a288.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-f73a9131.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-f33eb982.js b/web/settings/assets/ScheduledChargeConfig-3958a406.js similarity index 97% rename from web/settings/assets/ScheduledChargeConfig-f33eb982.js rename to web/settings/assets/ScheduledChargeConfig-3958a406.js index 98fcfea0bf..8003a5537d 100644 --- a/web/settings/assets/ScheduledChargeConfig-f33eb982.js +++ b/web/settings/assets/ScheduledChargeConfig-3958a406.js @@ -1 +1 @@ -import{C as g}from"./index-2148ad21.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-f73a9131.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-9c9cadc2.js b/web/settings/assets/Status-eed60d97.js similarity index 99% rename from web/settings/assets/Status-9c9cadc2.js rename to web/settings/assets/Status-eed60d97.js index 9bb6cea2da..478c8bbca3 100644 --- a/web/settings/assets/Status-9c9cadc2.js +++ b/web/settings/assets/Status-eed60d97.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-2148ad21.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-f73a9131.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-ce000ca7.js b/web/settings/assets/Support-61d51453.js similarity index 98% rename from web/settings/assets/Support-ce000ca7.js rename to web/settings/assets/Support-61d51453.js index 5eb94638d5..fc059dc2dd 100644 --- a/web/settings/assets/Support-ce000ca7.js +++ b/web/settings/assets/Support-61d51453.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-396ff0d4.js";import{C as B}from"./index-2148ad21.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-396ff0d4.js";import{C as B}from"./index-f73a9131.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-4d62d64a.js b/web/settings/assets/System-a0d6988e.js similarity index 99% rename from web/settings/assets/System-4d62d64a.js rename to web/settings/assets/System-a0d6988e.js index bfafa6c4b8..ac3efc1d21 100644 --- a/web/settings/assets/System-4d62d64a.js +++ b/web/settings/assets/System-a0d6988e.js @@ -1 +1 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-396ff0d4.js";import{C as E}from"./index-2148ad21.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-396ff0d4.js";import{C as E}from"./index-f73a9131.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-b310024f.js b/web/settings/assets/TestingStore-8c0031f9.js similarity index 99% rename from web/settings/assets/TestingStore-b310024f.js rename to web/settings/assets/TestingStore-8c0031f9.js index 8ebff0daa6..7e2217ad63 100644 --- a/web/settings/assets/TestingStore-b310024f.js +++ b/web/settings/assets/TestingStore-8c0031f9.js @@ -1 +1 @@ -import{C as h}from"./index-2148ad21.js";import{S as y}from"./OpenwbSortableList-db92c83c.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-f73a9131.js";import{S as y}from"./OpenwbSortableList-db92c83c.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-41698cb7.js b/web/settings/assets/TimeChargeConfig-e6a22d8f.js similarity index 96% rename from web/settings/assets/TimeChargeConfig-41698cb7.js rename to web/settings/assets/TimeChargeConfig-e6a22d8f.js index 3392d8dbb8..4c4bf7f413 100644 --- a/web/settings/assets/TimeChargeConfig-41698cb7.js +++ b/web/settings/assets/TimeChargeConfig-e6a22d8f.js @@ -1 +1 @@ -import{C as l}from"./index-2148ad21.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-f73a9131.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-77586afa.js b/web/settings/assets/VehicleConfig-77586afa.js new file mode 100644 index 0000000000..5a7c9cc73a --- /dev/null +++ b/web/settings/assets/VehicleConfig-77586afa.js @@ -0,0 +1 @@ +import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-396ff0d4.js";import{_ as S,C as ie}from"./index-f73a9131.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-e76a744b.js"),["assets/vehicle-e76a744b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-e146fe0e.js"),["assets/vehicle-e146fe0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-4b98a311.js"),["assets/vehicle-4b98a311.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-c5a65e75.js"),["assets/vehicle-c5a65e75.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-e377a977.js"),["assets/vehicle-e377a977.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-7cd93604.js"),["assets/vehicle-7cd93604.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-20cc743a.js"),["assets/vehicle-20cc743a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-6c139591.js"),["assets/vehicle-6c139591.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-50dd5eb2.js"),["assets/vehicle-50dd5eb2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-85f19442.js"),["assets/vehicle-85f19442.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-575fb854.js"),["assets/vehicle-575fb854.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-c96cd902.js"),["assets/vehicle-c96cd902.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-86f7a224.js","assets/index-f73a9131.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-eb74ae86.js"),["assets/vehicle-eb74ae86.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/VehicleConfig-a3954f94.js b/web/settings/assets/VehicleConfig-a3954f94.js deleted file mode 100644 index 5f6be053a3..0000000000 --- a/web/settings/assets/VehicleConfig-a3954f94.js +++ /dev/null @@ -1 +0,0 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-396ff0d4.js";import{_ as z,C as ie}from"./index-2148ad21.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as N,Q as ue,R as se}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=S=>m.updateConfiguration(S,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>z(()=>import("./vehicle-e76a744b.js"),["assets/vehicle-e76a744b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>z(()=>import("./vehicle-e146fe0e.js"),["assets/vehicle-e146fe0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>z(()=>import("./vehicle-4b98a311.js"),["assets/vehicle-4b98a311.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>z(()=>import("./vehicle-e377a977.js"),["assets/vehicle-e377a977.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>z(()=>import("./vehicle-7cd93604.js"),["assets/vehicle-7cd93604.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>z(()=>import("./vehicle-20cc743a.js"),["assets/vehicle-20cc743a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>z(()=>import("./vehicle-6c139591.js"),["assets/vehicle-6c139591.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>z(()=>import("./vehicle-50dd5eb2.js"),["assets/vehicle-50dd5eb2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>z(()=>import("./vehicle-85f19442.js"),["assets/vehicle-85f19442.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>z(()=>import("./vehicle-575fb854.js"),["assets/vehicle-575fb854.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>z(()=>import("./vehicle-de6be3c0.js"),["assets/vehicle-de6be3c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-86f7a224.js","assets/index-2148ad21.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>z(()=>import("./vehicle-eb74ae86.js"),["assets/vehicle-eb74ae86.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ne=w(()=>c("hr",null,null,-1)),Ie=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),S=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),I=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(S,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(I,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(S,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(S,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird nach Ladebeginn die Ladefreigabenicht unterbrochen, damit auch Fahrzeuge, die sehr lange für den Ladebeginn brauchen, genügend Zeit haben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(S,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(S,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ne,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ie,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(S,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:N(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(S,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(S,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:N(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(S,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(S,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/backup_cloud-b6c73543.js b/web/settings/assets/backup_cloud-b6c73543.js new file mode 100644 index 0000000000..bfa2c7b52c --- /dev/null +++ b/web/settings/assets/backup_cloud-b6c73543.js @@ -0,0 +1 @@ +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/bat-6a774d77.js b/web/settings/assets/bat-6a774d77.js new file mode 100644 index 0000000000..05b03f06e8 --- /dev/null +++ b/web/settings/assets/bat-6a774d77.js @@ -0,0 +1 @@ +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/counter-4b4b6fcb.js b/web/settings/assets/counter-4b4b6fcb.js new file mode 100644 index 0000000000..77b770a23c --- /dev/null +++ b/web/settings/assets/counter-4b4b6fcb.js @@ -0,0 +1 @@ +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-816bc001.js b/web/settings/assets/counter-816bc001.js new file mode 100644 index 0000000000..ce944a5267 --- /dev/null +++ b/web/settings/assets/counter-816bc001.js @@ -0,0 +1 @@ +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-af7b14cb.js b/web/settings/assets/counter-af7b14cb.js deleted file mode 100644 index 5e2768cb6c..0000000000 --- a/web/settings/assets/counter-af7b14cb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-eb5d92d4.js b/web/settings/assets/counter-eb5d92d4.js deleted file mode 100644 index 684974e546..0000000000 --- a/web/settings/assets/counter-eb5d92d4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as u,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-counter"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-0503e27c.js b/web/settings/assets/device-0503e27c.js deleted file mode 100644 index 268d372904..0000000000 --- a/web/settings/assets/device-0503e27c.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solarmax"},x={class:"small"};function w(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für Solarmax "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-0e74116d.js b/web/settings/assets/device-0e74116d.js new file mode 100644 index 0000000000..b229a36c5f --- /dev/null +++ b/web/settings/assets/device-0e74116d.js @@ -0,0 +1 @@ +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-1f86752d.js b/web/settings/assets/device-1f86752d.js new file mode 100644 index 0000000000..12597460a9 --- /dev/null +++ b/web/settings/assets/device-1f86752d.js @@ -0,0 +1 @@ +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-cea5a89a.js b/web/settings/assets/device-cea5a89a.js deleted file mode 100644 index a3bf57a1d1..0000000000 --- a/web/settings/assets/device-cea5a89a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as o,k as l,l as p,A as n,L as u,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostalplenticore"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return l(),p("div",b,[n(i,null,{default:u(()=>[_(" Einstellungen für Kostal Plenticore "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/index-2148ad21.js b/web/settings/assets/index-f73a9131.js similarity index 97% rename from web/settings/assets/index-2148ad21.js rename to web/settings/assets/index-f73a9131.js index 89388b981b..c732cd01c7 100644 --- a/web/settings/assets/index-2148ad21.js +++ b/web/settings/assets/index-f73a9131.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-6e5b23b4.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import{p as Ee,a as Ae}from"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-jquery-921f231b.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-9c9cadc2.js"),["assets/Status-9c9cadc2.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-8486f3f0.js"),["assets/ChargeLog-8486f3f0.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-2e592cfa.js"),["assets/Chart-2e592cfa.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-5f622c20.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-6e2e217f.js"),["assets/GeneralConfig-6e2e217f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-70122f32.js"),["assets/OptionalComponents-70122f32.js","assets/dynamic-import-helper-be004503.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-2884a640.js"),["assets/GeneralChargeConfig-2884a640.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-8445d7dd.js"),["assets/InstantChargeConfig-8445d7dd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-f39042dc.js"),["assets/PVChargeConfig-f39042dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-41698cb7.js"),["assets/TimeChargeConfig-41698cb7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-f33eb982.js"),["assets/ScheduledChargeConfig-f33eb982.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-b9cdb0ac.js"),["assets/HardwareInstallation-b9cdb0ac.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-9e2d8ef2.js"),["assets/LoadManagementConfig-9e2d8ef2.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-db92c83c.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-ecd34d4b.js"),["assets/ChargePointInstallation-ecd34d4b.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-a3954f94.js"),["assets/VehicleConfig-a3954f94.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-245430dd.js"),["assets/CloudConfig-245430dd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-7e5a8200.js"),["assets/MqttBridgeConfig-7e5a8200.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-97534b00.js"),["assets/DebugConfig-97534b00.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-ce000ca7.js"),["assets/Support-ce000ca7.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f12a8565.js"),["assets/LegalSettings-f12a8565.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-4d62d64a.js"),["assets/System-4d62d64a.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-7e37f4db.js"),["assets/DataManagement-7e37f4db.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-b310024f.js"),["assets/TestingStore-b310024f.js","assets/OpenwbSortableList-db92c83c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-6e5b23b4.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import{p as Ee,a as Ae}from"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-jquery-921f231b.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-eed60d97.js"),["assets/Status-eed60d97.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-7096367e.js"),["assets/ChargeLog-7096367e.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b2368220.js"),["assets/Chart-b2368220.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-5f622c20.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-e079d68c.js"),["assets/GeneralConfig-e079d68c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-38363e80.js"),["assets/OptionalComponents-38363e80.js","assets/dynamic-import-helper-be004503.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-10b74be1.js"),["assets/GeneralChargeConfig-10b74be1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-0c4a2b3b.js"),["assets/InstantChargeConfig-0c4a2b3b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-d52a8b34.js"),["assets/PVChargeConfig-d52a8b34.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-e6a22d8f.js"),["assets/TimeChargeConfig-e6a22d8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-3958a406.js"),["assets/ScheduledChargeConfig-3958a406.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-226d64a1.js"),["assets/HardwareInstallation-226d64a1.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-23370c56.js"),["assets/LoadManagementConfig-23370c56.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-db92c83c.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-480980cc.js"),["assets/ChargePointInstallation-480980cc.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-77586afa.js"),["assets/VehicleConfig-77586afa.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-64f3ecdf.js"),["assets/CloudConfig-64f3ecdf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-a0ff7a48.js"),["assets/MqttBridgeConfig-a0ff7a48.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-7d67d5b1.js"),["assets/DebugConfig-7d67d5b1.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-61d51453.js"),["assets/Support-61d51453.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-917626a5.js"),["assets/LegalSettings-917626a5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-a0d6988e.js"),["assets/System-a0d6988e.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-b69f05c7.js"),["assets/DataManagement-b69f05c7.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-8c0031f9.js"),["assets/TestingStore-8c0031f9.js","assets/OpenwbSortableList-db92c83c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-5378e193.js b/web/settings/assets/inverter-5378e193.js new file mode 100644 index 0000000000..7c2d4c7c6d --- /dev/null +++ b/web/settings/assets/inverter-5378e193.js @@ -0,0 +1 @@ +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-c9434684.js b/web/settings/assets/inverter-c9434684.js deleted file mode 100644 index d46f8bf04e..0000000000 --- a/web/settings/assets/inverter-c9434684.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-solarmax-inverter"},f={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",m,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarmax Wechselrichter "),l("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/vehicle-c5a65e75.js b/web/settings/assets/vehicle-c5a65e75.js new file mode 100644 index 0000000000..5a99229761 --- /dev/null +++ b/web/settings/assets/vehicle-c5a65e75.js @@ -0,0 +1 @@ +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-de6be3c0.js b/web/settings/assets/vehicle-c96cd902.js similarity index 98% rename from web/settings/assets/vehicle-de6be3c0.js rename to web/settings/assets/vehicle-c96cd902.js index 906b2b3c57..03fba6f1a9 100644 --- a/web/settings/assets/vehicle-de6be3c0.js +++ b/web/settings/assets/vehicle-c96cd902.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-6e5b23b4.js";import{a as y}from"./vendor-axios-86f7a224.js";import{C}from"./index-2148ad21.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-6e5b23b4.js";import{a as y}from"./vendor-axios-86f7a224.js";import{C}from"./index-f73a9131.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/index.html b/web/settings/index.html index 47c80311cb..8c65673d11 100644 --- a/web/settings/index.html +++ b/web/settings/index.html @@ -7,7 +7,7 @@ openWB - + From 6f30729b74b6c886ec369513f79e63db738433c5 Mon Sep 17 00:00:00 2001 From: andlem74 <73437243+andlem74@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:22:01 +0200 Subject: [PATCH 033/121] phase powers and currents added (#1059) * phase powers added * flake issues resolved * phase powers changed to tuple in counter config * added phase currents * newline added * whitespace removed --- packages/modules/devices/json/config.py | 10 ++++- packages/modules/devices/json/counter.py | 16 +++++++- packages/modules/devices/json/device.py | 13 +++++- packages/modules/devices/json/device_test.py | 42 ++++++++++++++++++++ 4 files changed, 76 insertions(+), 5 deletions(-) diff --git a/packages/modules/devices/json/config.py b/packages/modules/devices/json/config.py index 645a58ec18..1af6d338d9 100644 --- a/packages/modules/devices/json/config.py +++ b/packages/modules/devices/json/config.py @@ -41,10 +41,18 @@ def __init__(self, class JsonCounterConfiguration: - def __init__(self, jq_power: str = "", jq_exported: Optional[str] = None, jq_imported: Optional[str] = None): + def __init__(self, jq_power: str = "", jq_exported: Optional[str] = None, jq_imported: Optional[str] = None, + jq_power_l1: Optional[str] = None, + jq_power_l2: Optional[str] = None, + jq_power_l3: Optional[str] = None, + jq_current_l1: Optional[str] = None, + jq_current_l2: Optional[str] = None, + jq_current_l3: Optional[str] = None): self.jq_power = jq_power self.jq_exported = jq_exported self.jq_imported = jq_imported + self.jq_powers = (jq_power_l1, jq_power_l2, jq_power_l3) + self.jq_currents = (jq_current_l1, jq_current_l2, jq_current_l3) class JsonCounterSetup(ComponentSetup[JsonCounterConfiguration]): diff --git a/packages/modules/devices/json/counter.py b/packages/modules/devices/json/counter.py index e3fb62fb85..13eb8e296e 100644 --- a/packages/modules/devices/json/counter.py +++ b/packages/modules/devices/json/counter.py @@ -24,7 +24,17 @@ def update(self, response): config = self.component_config.configuration power = float(jq.compile(config.jq_power).input(response).first()) - # ToDo: add current or power per phase + + if all(config.jq_powers): + powers = [float(jq.compile(p).input(response).first()) for p in config.jq_powers] + else: + powers = None + + if all(config.jq_currents): + currents = [float(jq.compile(c).input(response).first()) for c in config.jq_currents] + else: + currents = None + if config.jq_imported is None or config.jq_exported is None: imported, exported = self.sim_counter.sim_count(power) else: @@ -34,7 +44,9 @@ def update(self, response): counter_state = CounterState( imported=imported, exported=exported, - power=power + power=power, + powers=powers, + currents=currents ) self.store.set(counter_state) diff --git a/packages/modules/devices/json/device.py b/packages/modules/devices/json/device.py index cc5aad8d9c..96395e5d9e 100644 --- a/packages/modules/devices/json/device.py +++ b/packages/modules/devices/json/device.py @@ -56,10 +56,19 @@ def read_legacy_bat(ip_address: str, jq_power: str, jq_soc: str): read_legacy(ip_address, bat.component_descriptor.configuration_factory(id=None, configuration=config)) -def read_legacy_counter(ip_address: str, jq_power: str, jq_imported: str, jq_exported: str): +def read_legacy_counter(ip_address: str, jq_power: str, jq_imported: str, jq_exported: str, + jq_power_l1: str, jq_power_l2: str, jq_power_l3: str, + jq_current_l1: str, jq_current_l2: str, jq_current_l3: str): config = JsonCounterConfiguration(jq_power=jq_power, jq_imported=None if jq_imported == "" else jq_imported, - jq_exported=None if jq_exported == "" else jq_exported) + jq_exported=None if jq_exported == "" else jq_exported, + jq_power_l1=None if jq_power_l1 == "" else jq_power_l1, + jq_power_l2=None if jq_power_l2 == "" else jq_power_l2, + jq_power_l3=None if jq_power_l3 == "" else jq_power_l3, + jq_current_l1=None if jq_current_l1 == "" else jq_current_l1, + jq_current_l2=None if jq_current_l2 == "" else jq_current_l2, + jq_current_l3=None if jq_current_l3 == "" else jq_current_l3 + ) read_legacy( ip_address, counter.component_descriptor.configuration_factory(id=None, configuration=config)) diff --git a/packages/modules/devices/json/device_test.py b/packages/modules/devices/json/device_test.py index 46a6a79a56..0a9b7c7d99 100644 --- a/packages/modules/devices/json/device_test.py +++ b/packages/modules/devices/json/device_test.py @@ -40,3 +40,45 @@ def test_device(monkeypatch, mock_value_store: Mock, requests_mock: requests_moc # evaluation assert len(mock_value_store.set.mock_calls) == 1 assert mock_value_store.set.call_args[0][0].power == expected_power + + +def test_counter_powers(monkeypatch, mock_value_store: Mock, requests_mock: requests_mock.Mocker): + # setup + monkeypatch.setattr(FaultState, "store_error", Mock()) + requests_mock.get("http://sample_host/sample_path", + json={"power": 42, "power_l1": 11, "power_l2": 12, "power_l3": 13}) + device_config = Json(configuration=JsonConfiguration("http://sample_host/sample_path")) + + # execution + device = create_device(device_config) + device.add_component(JsonCounterSetup(configuration=JsonCounterConfiguration(jq_power=".power", + jq_power_l1=".power_l1", + jq_power_l2=".power_l2", + jq_power_l3=".power_l3"))) + device.update() + + # evaluation + assert len(mock_value_store.set.mock_calls) == 1 + assert mock_value_store.set.call_args[0][0].power == 42 + assert mock_value_store.set.call_args[0][0].powers == [11, 12, 13] + + +def test_counter_currents(monkeypatch, mock_value_store: Mock, requests_mock: requests_mock.Mocker): + # setup + monkeypatch.setattr(FaultState, "store_error", Mock()) + requests_mock.get("http://sample_host/sample_path", + json={"power": 42, "current_l1": 11, "current_l2": 12, "current_l3": 13}) + device_config = Json(configuration=JsonConfiguration("http://sample_host/sample_path")) + + # execution + device = create_device(device_config) + device.add_component(JsonCounterSetup(configuration=JsonCounterConfiguration(jq_power=".power", + jq_current_l1=".current_l1", + jq_current_l2=".current_l2", + jq_current_l3=".current_l3"))) + device.update() + + # evaluation + assert len(mock_value_store.set.mock_calls) == 1 + assert mock_value_store.set.call_args[0][0].power == 42 + assert mock_value_store.set.call_args[0][0].currents == [11, 12, 13] From b5fc5e68b56be28536ce18c2084e741e06220342 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 4 Aug 2023 12:24:59 +0200 Subject: [PATCH 034/121] build UI --- ...eLog-7096367e.js => ChargeLog-70fa4b12.js} | 2 +- ...js => ChargePointInstallation-91778edb.js} | 2 +- .../{Chart-b2368220.js => Chart-bf76fb9e.js} | 2 +- ...ig-64f3ecdf.js => CloudConfig-e240cf70.js} | 2 +- ...b69f05c7.js => DataManagement-03e74cdc.js} | 2 +- ...ig-7d67d5b1.js => DebugConfig-7f3e104b.js} | 2 +- ...be1.js => GeneralChargeConfig-ff9f0666.js} | 2 +- ...-e079d68c.js => GeneralConfig-abdd6c9a.js} | 2 +- .../assets/HardwareInstallation-226d64a1.js | 1 - .../assets/HardwareInstallation-4752ed0c.js | 1 + ...b3b.js => InstantChargeConfig-3c9fe452.js} | 2 +- ...-917626a5.js => LegalSettings-f8408734.js} | 2 +- ...56.js => LoadManagementConfig-2faefad8.js} | 2 +- ...ff7a48.js => MqttBridgeConfig-dc2c20af.js} | 2 +- ...c83c.js => OpenwbSortableList-7d137bb0.js} | 2 +- ...3e80.js => OptionalComponents-6ef77f4c.js} | 2 +- ...d52a8b34.js => PVChargeConfig-04e8c577.js} | 2 +- ...6.js => ScheduledChargeConfig-f93a9bf5.js} | 2 +- ...{Status-eed60d97.js => Status-2f9e22dd.js} | 2 +- ...upport-61d51453.js => Support-007f9ec4.js} | 2 +- ...{System-a0d6988e.js => System-fff94d77.js} | 2 +- ...e-8c0031f9.js => TestingStore-73fc83a0.js} | 2 +- ...a22d8f.js => TimeChargeConfig-8875b0c6.js} | 2 +- ...-77586afa.js => VehicleConfig-7ad05e57.js} | 2 +- ...d-b6c73543.js => backup_cloud-99033254.js} | 2 +- ...d-f9884751.js => backup_cloud-e2986e8e.js} | 2 +- .../{bat-6c7e4549.js => bat-0735bfb3.js} | 2 +- .../{bat-e9bd65aa.js => bat-0f0a85bc.js} | 2 +- .../{bat-0dc7df81.js => bat-1761bb8c.js} | 2 +- .../{bat-78371791.js => bat-1edb0ead.js} | 2 +- .../{bat-9cf99a8b.js => bat-2cb7fcb7.js} | 2 +- .../{bat-05d57853.js => bat-374aadf3.js} | 2 +- .../{bat-747ec82c.js => bat-41d251bc.js} | 2 +- .../{bat-f32f983a.js => bat-4f8ed3c9.js} | 2 +- .../{bat-b860d161.js => bat-50d72e0f.js} | 2 +- .../{bat-6a774d77.js => bat-57cb095c.js} | 2 +- .../{bat-9fa50fa7.js => bat-5a3aee6e.js} | 2 +- .../{bat-7892c6ff.js => bat-701b11a5.js} | 2 +- .../{bat-862fe547.js => bat-8594bebd.js} | 2 +- .../{bat-c86a746f.js => bat-86e9bc80.js} | 2 +- .../{bat-96b30c95.js => bat-94ced6ef.js} | 2 +- .../{bat-ec186c85.js => bat-974e5d23.js} | 2 +- .../{bat-8d465039.js => bat-9ba92541.js} | 2 +- .../{bat-b9b268e2.js => bat-9e87a8db.js} | 2 +- .../{bat-e83535a3.js => bat-aaa94877.js} | 2 +- .../{bat-8e5275f9.js => bat-ad02ebbd.js} | 2 +- .../{bat-aea49a4e.js => bat-aed0365b.js} | 2 +- .../{bat-bd482ff6.js => bat-c9c9c592.js} | 2 +- .../{bat-552bb794.js => bat-d030cd24.js} | 2 +- .../{bat-56e740de.js => bat-d3c76890.js} | 2 +- .../{bat-5027e2dc.js => bat-dc75c3bc.js} | 2 +- .../{bat-a812139b.js => bat-e7a43b7b.js} | 2 +- .../{bat-3a522162.js => bat-f0bba54b.js} | 2 +- .../{bat-ce75f78c.js => bat-f7664e62.js} | 2 +- .../{bat-9c4cb66b.js => bat-f89e85e8.js} | 2 +- .../{bat-2c2c1739.js => bat-f915472c.js} | 2 +- .../{bat-34292ed1.js => bat-fe54661f.js} | 2 +- ...at_api-2f620f71.js => bat_api-83f4eb5d.js} | 2 +- ...bus-1de28157.js => bat_modbus-b77c2017.js} | 2 +- ...604c00.js => bat_smart_energy-4f701c67.js} | 2 +- ...nt-84db1946.js => chargePoint-33a12343.js} | 2 +- ...nt-04c96676.js => chargePoint-651f8f5f.js} | 2 +- ...nt-83c5fa5d.js => chargePoint-6a041309.js} | 2 +- ...nt-dc724714.js => chargePoint-a0a4acbf.js} | 2 +- ...nt-10dd26b7.js => chargePoint-c1796cd6.js} | 2 +- ...nt-7389b890.js => chargePoint-fe6ccb61.js} | 2 +- ...mands-022bb19a.js => commands-0085051f.js} | 2 +- ...ounter-b60b6e4a.js => counter-091a96b7.js} | 2 +- ...ounter-f9804b26.js => counter-0dc562bb.js} | 2 +- ...ounter-8142b909.js => counter-122dd37a.js} | 2 +- ...ounter-c22cfbf7.js => counter-17e6f697.js} | 2 +- ...ounter-746d0e2d.js => counter-1aee48a7.js} | 2 +- ...ounter-4bfdc2cd.js => counter-1dc0e174.js} | 2 +- ...ounter-f1ea356e.js => counter-27a9c2ee.js} | 2 +- ...ounter-ea469ce2.js => counter-29ac2dbe.js} | 2 +- ...ounter-5643a400.js => counter-2d2082cf.js} | 2 +- ...ounter-dc28491c.js => counter-2d7380c9.js} | 2 +- ...ounter-9b94bf71.js => counter-2daf569f.js} | 2 +- ...ounter-1d0f3892.js => counter-30000cd2.js} | 2 +- ...ounter-02f588be.js => counter-333c1a6d.js} | 2 +- ...ounter-dc4e356a.js => counter-34bc9327.js} | 2 +- ...ounter-9db9f949.js => counter-36353861.js} | 2 +- ...ounter-b9602155.js => counter-373a1c10.js} | 2 +- ...ounter-ee7b7fc2.js => counter-3aa24e62.js} | 2 +- ...ounter-26ce225d.js => counter-4514b956.js} | 2 +- ...ounter-0b0f0c4e.js => counter-596d7121.js} | 2 +- ...ounter-cd468b50.js => counter-5c24ebc7.js} | 2 +- ...ounter-7f35a959.js => counter-66249572.js} | 2 +- ...ounter-816bc001.js => counter-6d9b8554.js} | 2 +- ...ounter-ba947ca5.js => counter-74542c06.js} | 2 +- ...ounter-0a70ba4e.js => counter-8003bfd1.js} | 2 +- ...ounter-81355be8.js => counter-836555cd.js} | 2 +- ...ounter-db44398b.js => counter-87037b08.js} | 2 +- ...ounter-d3d1ea3f.js => counter-8741a800.js} | 2 +- ...ounter-35296ab7.js => counter-88eb412e.js} | 2 +- ...ounter-d1b5bc9e.js => counter-8fdb9d26.js} | 2 +- ...ounter-a17994d5.js => counter-96604727.js} | 2 +- ...ounter-cef05356.js => counter-b5fad35e.js} | 2 +- ...ounter-347ba16d.js => counter-bac10632.js} | 2 +- ...ounter-15317c83.js => counter-be7ebe08.js} | 2 +- web/settings/assets/counter-c1ba1c51.js | 1 - web/settings/assets/counter-c8a6ec77.js | 1 + ...ounter-269f6e9f.js => counter-d019a50a.js} | 2 +- ...ounter-cc16dae8.js => counter-d6b54631.js} | 2 +- ...ounter-56fdc27e.js => counter-dc035a3e.js} | 2 +- ...ounter-f29aec2b.js => counter-e3b8a3fa.js} | 2 +- ...ounter-2df223d5.js => counter-e44eee41.js} | 2 +- ...ounter-4b4b6fcb.js => counter-e9ec98c5.js} | 2 +- ...ounter-75067630.js => counter-f3278b0c.js} | 2 +- ...ounter-8e5b4e19.js => counter-fa32a0cf.js} | 2 +- ..._s0-55cbf638.js => counter_s0-764584ba.js} | 2 +- ..._sm-b8d44e45.js => counter_sm-ea82381f.js} | 2 +- ...{device-d36a7958.js => device-007ca4fb.js} | 2 +- ...{device-cbfffa6e.js => device-0ac32d64.js} | 2 +- ...{device-c1fd6c65.js => device-163e7968.js} | 2 +- ...{device-0fcb1898.js => device-1ae9d038.js} | 2 +- ...{device-5a0ee5e7.js => device-1da87f6d.js} | 2 +- ...{device-78972dd5.js => device-217340a2.js} | 2 +- ...{device-0d55c208.js => device-2677ebed.js} | 2 +- ...{device-a5d80d29.js => device-26d1cd71.js} | 2 +- ...{device-1e5af3ea.js => device-27f1f947.js} | 2 +- ...{device-e7f127ec.js => device-368823e3.js} | 2 +- ...{device-0afef9f8.js => device-38cd05bd.js} | 2 +- ...{device-227fe008.js => device-3d5e6b95.js} | 2 +- ...{device-f915e9e1.js => device-4674babe.js} | 2 +- ...{device-00997c9d.js => device-56b26147.js} | 2 +- ...{device-0e74116d.js => device-5eae489e.js} | 2 +- ...{device-2078311b.js => device-658cf7d5.js} | 2 +- ...{device-edfb92e7.js => device-711c4142.js} | 2 +- ...{device-4a9aeedd.js => device-774e8229.js} | 2 +- ...{device-c8f59f1c.js => device-796f2679.js} | 2 +- ...{device-c492c79f.js => device-7db846be.js} | 2 +- ...{device-1f86752d.js => device-7eb7f018.js} | 2 +- ...{device-39d25848.js => device-805a57b1.js} | 2 +- ...{device-e04c8431.js => device-81fa6cad.js} | 2 +- ...{device-18559536.js => device-8c005647.js} | 2 +- ...{device-5ae4acfc.js => device-8d3984b8.js} | 2 +- ...{device-fc73a673.js => device-8eeabc14.js} | 2 +- ...{device-79231634.js => device-9507155a.js} | 2 +- ...{device-4b441c71.js => device-97a184d3.js} | 2 +- ...{device-61765b74.js => device-99280bbf.js} | 2 +- ...{device-84ee9f0e.js => device-a55b29f8.js} | 2 +- ...{device-6f67126a.js => device-aa08fc7f.js} | 2 +- ...{device-47e73557.js => device-aba64669.js} | 2 +- ...{device-258d34d8.js => device-ae95c2d3.js} | 2 +- ...{device-dbb2dc55.js => device-b4c7f099.js} | 2 +- ...{device-a211281f.js => device-b78ab975.js} | 2 +- ...{device-a276a5e8.js => device-b9e954eb.js} | 2 +- ...{device-198215c0.js => device-bfe71246.js} | 2 +- ...{device-48b6056d.js => device-c7f03dad.js} | 2 +- ...{device-e1c1fe17.js => device-c7f8802d.js} | 2 +- ...{device-c6d8e75d.js => device-cbc50bc1.js} | 2 +- ...{device-3875053c.js => device-cbdcd521.js} | 2 +- ...{device-f0707a59.js => device-d3af1afc.js} | 2 +- ...{device-6b61f10b.js => device-d70aa0bc.js} | 2 +- ...{device-6bc81270.js => device-d77016c1.js} | 2 +- ...{device-7c1416ae.js => device-e3c08fb4.js} | 2 +- ...{device-d4c2290d.js => device-e4295529.js} | 2 +- ...{device-81cfe576.js => device-e48058b2.js} | 2 +- ...{device-e0c91363.js => device-e85a7920.js} | 2 +- ...{device-51726464.js => device-ed00b326.js} | 2 +- ...{device-8ad58e8f.js => device-ee213d99.js} | 2 +- ...{device-2120f8c0.js => device-f0ead4af.js} | 2 +- ...{device-43fe3974.js => device-f7ed291a.js} | 2 +- ...{device-c35af9f0.js => device-fd68e523.js} | 2 +- ...{device-e7707776.js => device-ff40d8e1.js} | 2 +- ...e-8212a288.js => displayTheme-65aaa96a.js} | 2 +- ...71401.js => external_inverter-3a87b7e0.js} | 2 +- ...d661e.js => external_inverter-79f2751a.js} | 2 +- ...e7859.js => external_inverter-fc2cb871.js} | 2 +- .../{index-f73a9131.js => index-b772b3e8.js} | 2 +- ...erter-5cf7f4ea.js => inverter-00a09c36.js} | 2 +- ...erter-c53f4fbf.js => inverter-0769e573.js} | 2 +- ...erter-1e116570.js => inverter-0f04bc4e.js} | 2 +- ...erter-5231c6c2.js => inverter-106f6b2a.js} | 2 +- ...erter-7b30173d.js => inverter-151fa9c5.js} | 2 +- ...erter-25c50f0a.js => inverter-1bbefb9c.js} | 2 +- ...erter-ebb193da.js => inverter-1bcb55bc.js} | 2 +- ...erter-a66f1636.js => inverter-239362ff.js} | 2 +- ...erter-e45e304e.js => inverter-23c62af1.js} | 2 +- ...erter-502f629e.js => inverter-26fc0c4d.js} | 2 +- ...erter-3e75383d.js => inverter-33d71d7c.js} | 2 +- ...erter-b4097339.js => inverter-3639b6ee.js} | 2 +- ...erter-2cf514ef.js => inverter-36547adc.js} | 2 +- ...erter-0748897a.js => inverter-3849924d.js} | 2 +- ...erter-a2fbbf7f.js => inverter-47ad48de.js} | 2 +- ...erter-4cef121f.js => inverter-5c832d19.js} | 2 +- ...erter-c87e2737.js => inverter-67becac8.js} | 2 +- ...erter-90f3d72b.js => inverter-695b5c53.js} | 2 +- ...erter-1e83ea2a.js => inverter-6bf21593.js} | 2 +- ...erter-7ff062ac.js => inverter-6f9c66d1.js} | 2 +- ...erter-766499df.js => inverter-78f559db.js} | 2 +- ...erter-e4d3cc40.js => inverter-7c9d893d.js} | 2 +- ...erter-c21d2035.js => inverter-832936bd.js} | 2 +- ...erter-238294f2.js => inverter-89f2126b.js} | 2 +- ...erter-b11fd5b4.js => inverter-9b9fe63d.js} | 2 +- ...erter-5952b75a.js => inverter-a15db0a0.js} | 2 +- ...erter-5378e193.js => inverter-a3407794.js} | 2 +- ...erter-b1fa892a.js => inverter-a6ddec85.js} | 2 +- ...erter-142e36fb.js => inverter-a8d17a4e.js} | 2 +- ...erter-902f3710.js => inverter-ab71cc4b.js} | 2 +- ...erter-127bad9a.js => inverter-ac056d1d.js} | 2 +- ...erter-9f25c7b8.js => inverter-b84b910e.js} | 2 +- ...erter-eff782b7.js => inverter-b8fdf4a4.js} | 2 +- ...erter-40527e01.js => inverter-bc58fc73.js} | 2 +- ...erter-c1bf7cde.js => inverter-c3c11140.js} | 2 +- ...erter-1d15d663.js => inverter-d4107377.js} | 2 +- ...erter-9fe0373f.js => inverter-d426b124.js} | 2 +- ...erter-141492ab.js => inverter-dfa572d8.js} | 2 +- ...erter-cbe3f201.js => inverter-e06fd605.js} | 2 +- ...erter-1e818ed4.js => inverter-e440b330.js} | 2 +- ...erter-2cb1f91b.js => inverter-eee1527f.js} | 2 +- ...erter-012c416a.js => inverter-ef72abc7.js} | 2 +- ...erter-4355b01b.js => inverter-fabd24ac.js} | 2 +- ...ehicle-e146fe0e.js => vehicle-0b6d061a.js} | 2 +- ...ehicle-50dd5eb2.js => vehicle-391df8d0.js} | 2 +- ...ehicle-7cd93604.js => vehicle-4249fcff.js} | 2 +- ...ehicle-4b98a311.js => vehicle-56b3de10.js} | 2 +- ...ehicle-6c139591.js => vehicle-67509117.js} | 2 +- ...ehicle-575fb854.js => vehicle-75667aad.js} | 2 +- ...ehicle-e377a977.js => vehicle-7df8b393.js} | 2 +- ...ehicle-c96cd902.js => vehicle-8923672d.js} | 2 +- ...ehicle-e76a744b.js => vehicle-a27fc177.js} | 2 +- ...ehicle-eb74ae86.js => vehicle-b9c60ee5.js} | 2 +- ...ehicle-c5a65e75.js => vehicle-d1763e7a.js} | 2 +- ...ehicle-20cc743a.js => vehicle-d98ffef7.js} | 2 +- ...ehicle-85f19442.js => vehicle-df2230d5.js} | 2 +- web/settings/assets/vendor-59c39d33.js | 100 ++++++++++++++++++ web/settings/assets/vendor-6e5b23b4.js | 100 ------------------ ...s-86f7a224.js => vendor-axios-1660eacd.js} | 2 +- ...75b4fa.js => vendor-bootstrap-aeba3518.js} | 2 +- ...5f622c20.js => vendor-chartjs-4871098e.js} | 2 +- ...f0d4.js => vendor-fortawesome-532a6e75.js} | 2 +- ...-921f231b.js => vendor-jquery-7c356c02.js} | 2 +- ...76726.js => vendor-sortablejs-1a35b5ad.js} | 2 +- web/settings/index.html | 14 +-- 236 files changed, 338 insertions(+), 338 deletions(-) rename web/settings/assets/{ChargeLog-7096367e.js => ChargeLog-70fa4b12.js} (96%) rename web/settings/assets/{ChargePointInstallation-480980cc.js => ChargePointInstallation-91778edb.js} (94%) rename web/settings/assets/{Chart-b2368220.js => Chart-bf76fb9e.js} (98%) rename web/settings/assets/{CloudConfig-64f3ecdf.js => CloudConfig-e240cf70.js} (96%) rename web/settings/assets/{DataManagement-b69f05c7.js => DataManagement-03e74cdc.js} (96%) rename web/settings/assets/{DebugConfig-7d67d5b1.js => DebugConfig-7f3e104b.js} (92%) rename web/settings/assets/{GeneralChargeConfig-10b74be1.js => GeneralChargeConfig-ff9f0666.js} (87%) rename web/settings/assets/{GeneralConfig-e079d68c.js => GeneralConfig-abdd6c9a.js} (97%) delete mode 100644 web/settings/assets/HardwareInstallation-226d64a1.js create mode 100644 web/settings/assets/HardwareInstallation-4752ed0c.js rename web/settings/assets/{InstantChargeConfig-0c4a2b3b.js => InstantChargeConfig-3c9fe452.js} (84%) rename web/settings/assets/{LegalSettings-917626a5.js => LegalSettings-f8408734.js} (84%) rename web/settings/assets/{LoadManagementConfig-23370c56.js => LoadManagementConfig-2faefad8.js} (95%) rename web/settings/assets/{MqttBridgeConfig-a0ff7a48.js => MqttBridgeConfig-dc2c20af.js} (95%) rename web/settings/assets/{OpenwbSortableList-db92c83c.js => OpenwbSortableList-7d137bb0.js} (96%) rename web/settings/assets/{OptionalComponents-38363e80.js => OptionalComponents-6ef77f4c.js} (98%) rename web/settings/assets/{PVChargeConfig-d52a8b34.js => PVChargeConfig-04e8c577.js} (98%) rename web/settings/assets/{ScheduledChargeConfig-3958a406.js => ScheduledChargeConfig-f93a9bf5.js} (85%) rename web/settings/assets/{Status-eed60d97.js => Status-2f9e22dd.js} (98%) rename web/settings/assets/{Support-61d51453.js => Support-007f9ec4.js} (94%) rename web/settings/assets/{System-a0d6988e.js => System-fff94d77.js} (97%) rename web/settings/assets/{TestingStore-8c0031f9.js => TestingStore-73fc83a0.js} (95%) rename web/settings/assets/{TimeChargeConfig-e6a22d8f.js => TimeChargeConfig-8875b0c6.js} (84%) rename web/settings/assets/{VehicleConfig-77586afa.js => VehicleConfig-7ad05e57.js} (94%) rename web/settings/assets/{backup_cloud-b6c73543.js => backup_cloud-99033254.js} (96%) rename web/settings/assets/{backup_cloud-f9884751.js => backup_cloud-e2986e8e.js} (92%) rename web/settings/assets/{bat-6c7e4549.js => bat-0735bfb3.js} (85%) rename web/settings/assets/{bat-e9bd65aa.js => bat-0f0a85bc.js} (86%) rename web/settings/assets/{bat-0dc7df81.js => bat-1761bb8c.js} (85%) rename web/settings/assets/{bat-78371791.js => bat-1edb0ead.js} (85%) rename web/settings/assets/{bat-9cf99a8b.js => bat-2cb7fcb7.js} (86%) rename web/settings/assets/{bat-05d57853.js => bat-374aadf3.js} (87%) rename web/settings/assets/{bat-747ec82c.js => bat-41d251bc.js} (86%) rename web/settings/assets/{bat-f32f983a.js => bat-4f8ed3c9.js} (94%) rename web/settings/assets/{bat-b860d161.js => bat-50d72e0f.js} (88%) rename web/settings/assets/{bat-6a774d77.js => bat-57cb095c.js} (90%) rename web/settings/assets/{bat-9fa50fa7.js => bat-5a3aee6e.js} (86%) rename web/settings/assets/{bat-7892c6ff.js => bat-701b11a5.js} (86%) rename web/settings/assets/{bat-862fe547.js => bat-8594bebd.js} (93%) rename web/settings/assets/{bat-c86a746f.js => bat-86e9bc80.js} (86%) rename web/settings/assets/{bat-96b30c95.js => bat-94ced6ef.js} (86%) rename web/settings/assets/{bat-ec186c85.js => bat-974e5d23.js} (86%) rename web/settings/assets/{bat-8d465039.js => bat-9ba92541.js} (85%) rename web/settings/assets/{bat-b9b268e2.js => bat-9e87a8db.js} (87%) rename web/settings/assets/{bat-e83535a3.js => bat-aaa94877.js} (96%) rename web/settings/assets/{bat-8e5275f9.js => bat-ad02ebbd.js} (93%) rename web/settings/assets/{bat-aea49a4e.js => bat-aed0365b.js} (86%) rename web/settings/assets/{bat-bd482ff6.js => bat-c9c9c592.js} (87%) rename web/settings/assets/{bat-552bb794.js => bat-d030cd24.js} (86%) rename web/settings/assets/{bat-56e740de.js => bat-d3c76890.js} (86%) rename web/settings/assets/{bat-5027e2dc.js => bat-dc75c3bc.js} (86%) rename web/settings/assets/{bat-a812139b.js => bat-e7a43b7b.js} (86%) rename web/settings/assets/{bat-3a522162.js => bat-f0bba54b.js} (88%) rename web/settings/assets/{bat-ce75f78c.js => bat-f7664e62.js} (94%) rename web/settings/assets/{bat-9c4cb66b.js => bat-f89e85e8.js} (86%) rename web/settings/assets/{bat-2c2c1739.js => bat-f915472c.js} (90%) rename web/settings/assets/{bat-34292ed1.js => bat-fe54661f.js} (86%) rename web/settings/assets/{bat_api-2f620f71.js => bat_api-83f4eb5d.js} (86%) rename web/settings/assets/{bat_modbus-1de28157.js => bat_modbus-b77c2017.js} (86%) rename web/settings/assets/{bat_smart_energy-f1604c00.js => bat_smart_energy-4f701c67.js} (86%) rename web/settings/assets/{chargePoint-84db1946.js => chargePoint-33a12343.js} (94%) rename web/settings/assets/{chargePoint-04c96676.js => chargePoint-651f8f5f.js} (84%) rename web/settings/assets/{chargePoint-83c5fa5d.js => chargePoint-6a041309.js} (92%) rename web/settings/assets/{chargePoint-dc724714.js => chargePoint-a0a4acbf.js} (95%) rename web/settings/assets/{chargePoint-10dd26b7.js => chargePoint-c1796cd6.js} (98%) rename web/settings/assets/{chargePoint-7389b890.js => chargePoint-fe6ccb61.js} (95%) rename web/settings/assets/{commands-022bb19a.js => commands-0085051f.js} (96%) rename web/settings/assets/{counter-b60b6e4a.js => counter-091a96b7.js} (88%) rename web/settings/assets/{counter-f9804b26.js => counter-0dc562bb.js} (90%) rename web/settings/assets/{counter-8142b909.js => counter-122dd37a.js} (86%) rename web/settings/assets/{counter-c22cfbf7.js => counter-17e6f697.js} (88%) rename web/settings/assets/{counter-746d0e2d.js => counter-1aee48a7.js} (93%) rename web/settings/assets/{counter-4bfdc2cd.js => counter-1dc0e174.js} (86%) rename web/settings/assets/{counter-f1ea356e.js => counter-27a9c2ee.js} (90%) rename web/settings/assets/{counter-ea469ce2.js => counter-29ac2dbe.js} (86%) rename web/settings/assets/{counter-5643a400.js => counter-2d2082cf.js} (91%) rename web/settings/assets/{counter-dc28491c.js => counter-2d7380c9.js} (87%) rename web/settings/assets/{counter-9b94bf71.js => counter-2daf569f.js} (96%) rename web/settings/assets/{counter-1d0f3892.js => counter-30000cd2.js} (86%) rename web/settings/assets/{counter-02f588be.js => counter-333c1a6d.js} (87%) rename web/settings/assets/{counter-dc4e356a.js => counter-34bc9327.js} (85%) rename web/settings/assets/{counter-9db9f949.js => counter-36353861.js} (92%) rename web/settings/assets/{counter-b9602155.js => counter-373a1c10.js} (86%) rename web/settings/assets/{counter-ee7b7fc2.js => counter-3aa24e62.js} (85%) rename web/settings/assets/{counter-26ce225d.js => counter-4514b956.js} (90%) rename web/settings/assets/{counter-0b0f0c4e.js => counter-596d7121.js} (89%) rename web/settings/assets/{counter-cd468b50.js => counter-5c24ebc7.js} (86%) rename web/settings/assets/{counter-7f35a959.js => counter-66249572.js} (86%) rename web/settings/assets/{counter-816bc001.js => counter-6d9b8554.js} (88%) rename web/settings/assets/{counter-ba947ca5.js => counter-74542c06.js} (86%) rename web/settings/assets/{counter-0a70ba4e.js => counter-8003bfd1.js} (86%) rename web/settings/assets/{counter-81355be8.js => counter-836555cd.js} (86%) rename web/settings/assets/{counter-db44398b.js => counter-87037b08.js} (86%) rename web/settings/assets/{counter-d3d1ea3f.js => counter-8741a800.js} (85%) rename web/settings/assets/{counter-35296ab7.js => counter-88eb412e.js} (87%) rename web/settings/assets/{counter-d1b5bc9e.js => counter-8fdb9d26.js} (91%) rename web/settings/assets/{counter-a17994d5.js => counter-96604727.js} (90%) rename web/settings/assets/{counter-cef05356.js => counter-b5fad35e.js} (97%) rename web/settings/assets/{counter-347ba16d.js => counter-bac10632.js} (90%) rename web/settings/assets/{counter-15317c83.js => counter-be7ebe08.js} (86%) delete mode 100644 web/settings/assets/counter-c1ba1c51.js create mode 100644 web/settings/assets/counter-c8a6ec77.js rename web/settings/assets/{counter-269f6e9f.js => counter-d019a50a.js} (86%) rename web/settings/assets/{counter-cc16dae8.js => counter-d6b54631.js} (90%) rename web/settings/assets/{counter-56fdc27e.js => counter-dc035a3e.js} (86%) rename web/settings/assets/{counter-f29aec2b.js => counter-e3b8a3fa.js} (86%) rename web/settings/assets/{counter-2df223d5.js => counter-e44eee41.js} (86%) rename web/settings/assets/{counter-4b4b6fcb.js => counter-e9ec98c5.js} (89%) rename web/settings/assets/{counter-75067630.js => counter-f3278b0c.js} (88%) rename web/settings/assets/{counter-8e5b4e19.js => counter-fa32a0cf.js} (86%) rename web/settings/assets/{counter_s0-55cbf638.js => counter_s0-764584ba.js} (86%) rename web/settings/assets/{counter_sm-b8d44e45.js => counter_sm-ea82381f.js} (96%) rename web/settings/assets/{device-d36a7958.js => device-007ca4fb.js} (85%) rename web/settings/assets/{device-cbfffa6e.js => device-0ac32d64.js} (91%) rename web/settings/assets/{device-c1fd6c65.js => device-163e7968.js} (87%) rename web/settings/assets/{device-0fcb1898.js => device-1ae9d038.js} (94%) rename web/settings/assets/{device-5a0ee5e7.js => device-1da87f6d.js} (87%) rename web/settings/assets/{device-78972dd5.js => device-217340a2.js} (88%) rename web/settings/assets/{device-0d55c208.js => device-2677ebed.js} (89%) rename web/settings/assets/{device-a5d80d29.js => device-26d1cd71.js} (89%) rename web/settings/assets/{device-1e5af3ea.js => device-27f1f947.js} (87%) rename web/settings/assets/{device-e7f127ec.js => device-368823e3.js} (95%) rename web/settings/assets/{device-0afef9f8.js => device-38cd05bd.js} (89%) rename web/settings/assets/{device-227fe008.js => device-3d5e6b95.js} (88%) rename web/settings/assets/{device-f915e9e1.js => device-4674babe.js} (85%) rename web/settings/assets/{device-00997c9d.js => device-56b26147.js} (89%) rename web/settings/assets/{device-0e74116d.js => device-5eae489e.js} (90%) rename web/settings/assets/{device-2078311b.js => device-658cf7d5.js} (87%) rename web/settings/assets/{device-edfb92e7.js => device-711c4142.js} (89%) rename web/settings/assets/{device-4a9aeedd.js => device-774e8229.js} (87%) rename web/settings/assets/{device-c8f59f1c.js => device-796f2679.js} (88%) rename web/settings/assets/{device-c492c79f.js => device-7db846be.js} (89%) rename web/settings/assets/{device-1f86752d.js => device-7eb7f018.js} (87%) rename web/settings/assets/{device-39d25848.js => device-805a57b1.js} (89%) rename web/settings/assets/{device-e04c8431.js => device-81fa6cad.js} (85%) rename web/settings/assets/{device-18559536.js => device-8c005647.js} (85%) rename web/settings/assets/{device-5ae4acfc.js => device-8d3984b8.js} (89%) rename web/settings/assets/{device-fc73a673.js => device-8eeabc14.js} (87%) rename web/settings/assets/{device-79231634.js => device-9507155a.js} (95%) rename web/settings/assets/{device-4b441c71.js => device-97a184d3.js} (95%) rename web/settings/assets/{device-61765b74.js => device-99280bbf.js} (87%) rename web/settings/assets/{device-84ee9f0e.js => device-a55b29f8.js} (96%) rename web/settings/assets/{device-6f67126a.js => device-aa08fc7f.js} (86%) rename web/settings/assets/{device-47e73557.js => device-aba64669.js} (89%) rename web/settings/assets/{device-258d34d8.js => device-ae95c2d3.js} (87%) rename web/settings/assets/{device-dbb2dc55.js => device-b4c7f099.js} (88%) rename web/settings/assets/{device-a211281f.js => device-b78ab975.js} (87%) rename web/settings/assets/{device-a276a5e8.js => device-b9e954eb.js} (89%) rename web/settings/assets/{device-198215c0.js => device-bfe71246.js} (90%) rename web/settings/assets/{device-48b6056d.js => device-c7f03dad.js} (90%) rename web/settings/assets/{device-e1c1fe17.js => device-c7f8802d.js} (86%) rename web/settings/assets/{device-c6d8e75d.js => device-cbc50bc1.js} (91%) rename web/settings/assets/{device-3875053c.js => device-cbdcd521.js} (92%) rename web/settings/assets/{device-f0707a59.js => device-d3af1afc.js} (87%) rename web/settings/assets/{device-6b61f10b.js => device-d70aa0bc.js} (90%) rename web/settings/assets/{device-6bc81270.js => device-d77016c1.js} (87%) rename web/settings/assets/{device-7c1416ae.js => device-e3c08fb4.js} (85%) rename web/settings/assets/{device-d4c2290d.js => device-e4295529.js} (87%) rename web/settings/assets/{device-81cfe576.js => device-e48058b2.js} (91%) rename web/settings/assets/{device-e0c91363.js => device-e85a7920.js} (90%) rename web/settings/assets/{device-51726464.js => device-ed00b326.js} (89%) rename web/settings/assets/{device-8ad58e8f.js => device-ee213d99.js} (89%) rename web/settings/assets/{device-2120f8c0.js => device-f0ead4af.js} (87%) rename web/settings/assets/{device-43fe3974.js => device-f7ed291a.js} (87%) rename web/settings/assets/{device-c35af9f0.js => device-fd68e523.js} (87%) rename web/settings/assets/{device-e7707776.js => device-ff40d8e1.js} (89%) rename web/settings/assets/{displayTheme-8212a288.js => displayTheme-65aaa96a.js} (97%) rename web/settings/assets/{external_inverter-12a71401.js => external_inverter-3a87b7e0.js} (86%) rename web/settings/assets/{external_inverter-266d661e.js => external_inverter-79f2751a.js} (92%) rename web/settings/assets/{external_inverter-114e7859.js => external_inverter-fc2cb871.js} (86%) rename web/settings/assets/{index-f73a9131.js => index-b772b3e8.js} (87%) rename web/settings/assets/{inverter-5cf7f4ea.js => inverter-00a09c36.js} (86%) rename web/settings/assets/{inverter-c53f4fbf.js => inverter-0769e573.js} (93%) rename web/settings/assets/{inverter-1e116570.js => inverter-0f04bc4e.js} (88%) rename web/settings/assets/{inverter-5231c6c2.js => inverter-106f6b2a.js} (88%) rename web/settings/assets/{inverter-7b30173d.js => inverter-151fa9c5.js} (86%) rename web/settings/assets/{inverter-25c50f0a.js => inverter-1bbefb9c.js} (91%) rename web/settings/assets/{inverter-ebb193da.js => inverter-1bcb55bc.js} (86%) rename web/settings/assets/{inverter-a66f1636.js => inverter-239362ff.js} (89%) rename web/settings/assets/{inverter-e45e304e.js => inverter-23c62af1.js} (86%) rename web/settings/assets/{inverter-502f629e.js => inverter-26fc0c4d.js} (94%) rename web/settings/assets/{inverter-3e75383d.js => inverter-33d71d7c.js} (87%) rename web/settings/assets/{inverter-b4097339.js => inverter-3639b6ee.js} (88%) rename web/settings/assets/{inverter-2cf514ef.js => inverter-36547adc.js} (95%) rename web/settings/assets/{inverter-0748897a.js => inverter-3849924d.js} (94%) rename web/settings/assets/{inverter-a2fbbf7f.js => inverter-47ad48de.js} (90%) rename web/settings/assets/{inverter-4cef121f.js => inverter-5c832d19.js} (86%) rename web/settings/assets/{inverter-c87e2737.js => inverter-67becac8.js} (86%) rename web/settings/assets/{inverter-90f3d72b.js => inverter-695b5c53.js} (86%) rename web/settings/assets/{inverter-1e83ea2a.js => inverter-6bf21593.js} (90%) rename web/settings/assets/{inverter-7ff062ac.js => inverter-6f9c66d1.js} (90%) rename web/settings/assets/{inverter-766499df.js => inverter-78f559db.js} (86%) rename web/settings/assets/{inverter-e4d3cc40.js => inverter-7c9d893d.js} (86%) rename web/settings/assets/{inverter-c21d2035.js => inverter-832936bd.js} (86%) rename web/settings/assets/{inverter-238294f2.js => inverter-89f2126b.js} (86%) rename web/settings/assets/{inverter-b11fd5b4.js => inverter-9b9fe63d.js} (96%) rename web/settings/assets/{inverter-5952b75a.js => inverter-a15db0a0.js} (86%) rename web/settings/assets/{inverter-5378e193.js => inverter-a3407794.js} (93%) rename web/settings/assets/{inverter-b1fa892a.js => inverter-a6ddec85.js} (93%) rename web/settings/assets/{inverter-142e36fb.js => inverter-a8d17a4e.js} (88%) rename web/settings/assets/{inverter-902f3710.js => inverter-ab71cc4b.js} (90%) rename web/settings/assets/{inverter-127bad9a.js => inverter-ac056d1d.js} (86%) rename web/settings/assets/{inverter-9f25c7b8.js => inverter-b84b910e.js} (86%) rename web/settings/assets/{inverter-eff782b7.js => inverter-b8fdf4a4.js} (86%) rename web/settings/assets/{inverter-40527e01.js => inverter-bc58fc73.js} (91%) rename web/settings/assets/{inverter-c1bf7cde.js => inverter-c3c11140.js} (93%) rename web/settings/assets/{inverter-1d15d663.js => inverter-d4107377.js} (86%) rename web/settings/assets/{inverter-9fe0373f.js => inverter-d426b124.js} (86%) rename web/settings/assets/{inverter-141492ab.js => inverter-dfa572d8.js} (86%) rename web/settings/assets/{inverter-cbe3f201.js => inverter-e06fd605.js} (93%) rename web/settings/assets/{inverter-1e818ed4.js => inverter-e440b330.js} (86%) rename web/settings/assets/{inverter-2cb1f91b.js => inverter-eee1527f.js} (93%) rename web/settings/assets/{inverter-012c416a.js => inverter-ef72abc7.js} (89%) rename web/settings/assets/{inverter-4355b01b.js => inverter-fabd24ac.js} (86%) rename web/settings/assets/{vehicle-e146fe0e.js => vehicle-0b6d061a.js} (90%) rename web/settings/assets/{vehicle-50dd5eb2.js => vehicle-391df8d0.js} (93%) rename web/settings/assets/{vehicle-7cd93604.js => vehicle-4249fcff.js} (95%) rename web/settings/assets/{vehicle-4b98a311.js => vehicle-56b3de10.js} (91%) rename web/settings/assets/{vehicle-6c139591.js => vehicle-67509117.js} (95%) rename web/settings/assets/{vehicle-575fb854.js => vehicle-75667aad.js} (91%) rename web/settings/assets/{vehicle-e377a977.js => vehicle-7df8b393.js} (94%) rename web/settings/assets/{vehicle-c96cd902.js => vehicle-8923672d.js} (94%) rename web/settings/assets/{vehicle-e76a744b.js => vehicle-a27fc177.js} (91%) rename web/settings/assets/{vehicle-eb74ae86.js => vehicle-b9c60ee5.js} (91%) rename web/settings/assets/{vehicle-c5a65e75.js => vehicle-d1763e7a.js} (93%) rename web/settings/assets/{vehicle-20cc743a.js => vehicle-d98ffef7.js} (92%) rename web/settings/assets/{vehicle-85f19442.js => vehicle-df2230d5.js} (92%) create mode 100644 web/settings/assets/vendor-59c39d33.js delete mode 100644 web/settings/assets/vendor-6e5b23b4.js rename web/settings/assets/{vendor-axios-86f7a224.js => vendor-axios-1660eacd.js} (99%) rename web/settings/assets/{vendor-bootstrap-6c75b4fa.js => vendor-bootstrap-aeba3518.js} (99%) rename web/settings/assets/{vendor-chartjs-5f622c20.js => vendor-chartjs-4871098e.js} (99%) rename web/settings/assets/{vendor-fortawesome-396ff0d4.js => vendor-fortawesome-532a6e75.js} (99%) rename web/settings/assets/{vendor-jquery-921f231b.js => vendor-jquery-7c356c02.js} (99%) rename web/settings/assets/{vendor-sortablejs-b3476726.js => vendor-sortablejs-1a35b5ad.js} (99%) diff --git a/web/settings/assets/ChargeLog-7096367e.js b/web/settings/assets/ChargeLog-70fa4b12.js similarity index 96% rename from web/settings/assets/ChargeLog-7096367e.js rename to web/settings/assets/ChargeLog-70fa4b12.js index 7f5192ad76..ac9ee302bf 100644 --- a/web/settings/assets/ChargeLog-7096367e.js +++ b/web/settings/assets/ChargeLog-70fa4b12.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-396ff0d4.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-6e5b23b4.js";import{C as N}from"./index-f73a9131.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-b772b3e8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-480980cc.js b/web/settings/assets/ChargePointInstallation-91778edb.js similarity index 94% rename from web/settings/assets/ChargePointInstallation-480980cc.js rename to web/settings/assets/ChargePointInstallation-91778edb.js index 743d3e6afc..930f25fefa 100644 --- a/web/settings/assets/ChargePointInstallation-480980cc.js +++ b/web/settings/assets/ChargePointInstallation-91778edb.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-396ff0d4.js";import{_ as L,C as oe}from"./index-f73a9131.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dc724714.js"),["assets/chargePoint-dc724714.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-83c5fa5d.js"),["assets/chargePoint-83c5fa5d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-10dd26b7.js"),["assets/chargePoint-10dd26b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-04c96676.js"),["assets/chargePoint-04c96676.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-7389b890.js"),["assets/chargePoint-7389b890.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-84db1946.js"),["assets/chargePoint-84db1946.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-022bb19a.js"),["assets/commands-022bb19a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-b772b3e8.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-b2368220.js b/web/settings/assets/Chart-bf76fb9e.js similarity index 98% rename from web/settings/assets/Chart-b2368220.js rename to web/settings/assets/Chart-bf76fb9e.js index 7043816f49..ffcee9c658 100644 --- a/web/settings/assets/Chart-b2368220.js +++ b/web/settings/assets/Chart-bf76fb9e.js @@ -1 +1 @@ -import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-f73a9131.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-5f622c20.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; +import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-b772b3e8.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-4871098e.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; diff --git a/web/settings/assets/CloudConfig-64f3ecdf.js b/web/settings/assets/CloudConfig-e240cf70.js similarity index 96% rename from web/settings/assets/CloudConfig-64f3ecdf.js rename to web/settings/assets/CloudConfig-e240cf70.js index 0f4b2b10c5..9de0efd726 100644 --- a/web/settings/assets/CloudConfig-64f3ecdf.js +++ b/web/settings/assets/CloudConfig-e240cf70.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-f73a9131.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f9884751.js"),["assets/backup_cloud-f9884751.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-b6c73543.js"),["assets/backup_cloud-b6c73543.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; +import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-532a6e75.js";import{_ as D,C as N}from"./index-b772b3e8.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as T,a1 as q,z as S,n as v,G as F,I as W,a2 as G}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-99033254.js"),["assets/backup_cloud-99033254.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-7d67d5b1.js b/web/settings/assets/DebugConfig-7f3e104b.js similarity index 92% rename from web/settings/assets/DebugConfig-7d67d5b1.js rename to web/settings/assets/DebugConfig-7f3e104b.js index da20b3ce47..b8c87a2c6e 100644 --- a/web/settings/assets/DebugConfig-7d67d5b1.js +++ b/web/settings/assets/DebugConfig-7f3e104b.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as _}from"./index-f73a9131.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-b772b3e8.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-10b74be1.js b/web/settings/assets/GeneralChargeConfig-ff9f0666.js similarity index 87% rename from web/settings/assets/GeneralChargeConfig-10b74be1.js rename to web/settings/assets/GeneralChargeConfig-ff9f0666.js index 3f131f1c66..8af8f6cc47 100644 --- a/web/settings/assets/GeneralChargeConfig-10b74be1.js +++ b/web/settings/assets/GeneralChargeConfig-ff9f0666.js @@ -1 +1 @@ -import{C as c}from"./index-f73a9131.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-b772b3e8.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-e079d68c.js b/web/settings/assets/GeneralConfig-abdd6c9a.js similarity index 97% rename from web/settings/assets/GeneralConfig-e079d68c.js rename to web/settings/assets/GeneralConfig-abdd6c9a.js index 8929debb95..4901c7d8c9 100644 --- a/web/settings/assets/GeneralConfig-e079d68c.js +++ b/web/settings/assets/GeneralConfig-abdd6c9a.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-f73a9131.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-9c4cb66b.js"),["assets/bat-9c4cb66b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-cd468b50.js"),["assets/counter-cd468b50.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-c21d2035.js"),["assets/inverter-c21d2035.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-7892c6ff.js"),["assets/bat-7892c6ff.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-8142b909.js"),["assets/counter-8142b909.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-12a71401.js"),["assets/external_inverter-12a71401.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-5cf7f4ea.js"),["assets/inverter-5cf7f4ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-6c7e4549.js"),["assets/bat-6c7e4549.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ba947ca5.js"),["assets/counter-ba947ca5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-a17994d5.js"),["assets/counter-a17994d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a2fbbf7f.js"),["assets/inverter-a2fbbf7f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-78371791.js"),["assets/bat-78371791.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-ee7b7fc2.js"),["assets/counter-ee7b7fc2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-114e7859.js"),["assets/external_inverter-114e7859.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-90f3d72b.js"),["assets/inverter-90f3d72b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-75067630.js"),["assets/counter-75067630.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b4097339.js"),["assets/inverter-b4097339.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-b9b268e2.js"),["assets/bat-b9b268e2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-f29aec2b.js"),["assets/counter-f29aec2b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-c87e2737.js"),["assets/inverter-c87e2737.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-bd482ff6.js"),["assets/bat-bd482ff6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-55cbf638.js"),["assets/counter_s0-55cbf638.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-b8d44e45.js"),["assets/counter_sm-b8d44e45.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-7b30173d.js"),["assets/inverter-7b30173d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-34292ed1.js"),["assets/bat-34292ed1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-db44398b.js"),["assets/counter-db44398b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-1d15d663.js"),["assets/inverter-1d15d663.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-e83535a3.js"),["assets/bat-e83535a3.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-cef05356.js"),["assets/counter-cef05356.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-502f629e.js"),["assets/inverter-502f629e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-56e740de.js"),["assets/bat-56e740de.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-1d0f3892.js"),["assets/counter-1d0f3892.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-4cef121f.js"),["assets/inverter-4cef121f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-ea469ce2.js"),["assets/counter-ea469ce2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f32f983a.js"),["assets/bat-f32f983a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c1ba1c51.js"),["assets/counter-c1ba1c51.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c1bf7cde.js"),["assets/inverter-c1bf7cde.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-dc4e356a.js"),["assets/counter-dc4e356a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-0748897a.js"),["assets/inverter-0748897a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-862fe547.js"),["assets/bat-862fe547.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-4b4b6fcb.js"),["assets/counter-4b4b6fcb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-c53f4fbf.js"),["assets/inverter-c53f4fbf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-816bc001.js"),["assets/counter-816bc001.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-012c416a.js"),["assets/inverter-012c416a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-8d465039.js"),["assets/bat-8d465039.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-0a70ba4e.js"),["assets/counter-0a70ba4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-141492ab.js"),["assets/inverter-141492ab.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-ce75f78c.js"),["assets/bat-ce75f78c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-9b94bf71.js"),["assets/counter-9b94bf71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-2cb1f91b.js"),["assets/inverter-2cb1f91b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3a522162.js"),["assets/bat-3a522162.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-b860d161.js"),["assets/bat-b860d161.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-c22cfbf7.js"),["assets/counter-c22cfbf7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-142e36fb.js"),["assets/inverter-142e36fb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-2c2c1739.js"),["assets/bat-2c2c1739.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-26ce225d.js"),["assets/counter-26ce225d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-902f3710.js"),["assets/inverter-902f3710.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1e116570.js"),["assets/inverter-1e116570.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-b60b6e4a.js"),["assets/counter-b60b6e4a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-4355b01b.js"),["assets/inverter-4355b01b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-d1b5bc9e.js"),["assets/counter-d1b5bc9e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-25c50f0a.js"),["assets/inverter-25c50f0a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-a812139b.js"),["assets/bat-a812139b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-7f35a959.js"),["assets/counter-7f35a959.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-1e818ed4.js"),["assets/inverter-1e818ed4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-0dc7df81.js"),["assets/bat-0dc7df81.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d3d1ea3f.js"),["assets/counter-d3d1ea3f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-e4d3cc40.js"),["assets/inverter-e4d3cc40.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-ec186c85.js"),["assets/bat-ec186c85.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-9fa50fa7.js"),["assets/bat-9fa50fa7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-8e5b4e19.js"),["assets/counter-8e5b4e19.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-ebb193da.js"),["assets/inverter-ebb193da.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b9602155.js"),["assets/counter-b9602155.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-0b0f0c4e.js"),["assets/counter-0b0f0c4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-1e83ea2a.js"),["assets/inverter-1e83ea2a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-aea49a4e.js"),["assets/bat-aea49a4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-f1604c00.js"),["assets/bat_smart_energy-f1604c00.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-269f6e9f.js"),["assets/counter-269f6e9f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-b11fd5b4.js"),["assets/inverter-b11fd5b4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-552bb794.js"),["assets/bat-552bb794.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-9fe0373f.js"),["assets/inverter-9fe0373f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-dc28491c.js"),["assets/counter-dc28491c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-3e75383d.js"),["assets/inverter-3e75383d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-56fdc27e.js"),["assets/counter-56fdc27e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-f9804b26.js"),["assets/counter-f9804b26.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-127bad9a.js"),["assets/inverter-127bad9a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-2df223d5.js"),["assets/counter-2df223d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-a66f1636.js"),["assets/inverter-a66f1636.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-e9bd65aa.js"),["assets/bat-e9bd65aa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-15317c83.js"),["assets/counter-15317c83.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-9f25c7b8.js"),["assets/inverter-9f25c7b8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-746d0e2d.js"),["assets/counter-746d0e2d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-cbe3f201.js"),["assets/inverter-cbe3f201.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-8e5275f9.js"),["assets/bat-8e5275f9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-5643a400.js"),["assets/counter-5643a400.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-266d661e.js"),["assets/external_inverter-266d661e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-b1fa892a.js"),["assets/inverter-b1fa892a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-6a774d77.js"),["assets/bat-6a774d77.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-5378e193.js"),["assets/inverter-5378e193.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-5027e2dc.js"),["assets/bat-5027e2dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-4bfdc2cd.js"),["assets/counter-4bfdc2cd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-eff782b7.js"),["assets/inverter-eff782b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-747ec82c.js"),["assets/bat-747ec82c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-02f588be.js"),["assets/counter-02f588be.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-e45e304e.js"),["assets/inverter-e45e304e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-9cf99a8b.js"),["assets/bat-9cf99a8b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-40527e01.js"),["assets/inverter-40527e01.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-c86a746f.js"),["assets/bat-c86a746f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-f1ea356e.js"),["assets/counter-f1ea356e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-766499df.js"),["assets/inverter-766499df.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-5952b75a.js"),["assets/inverter-5952b75a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-96b30c95.js"),["assets/bat-96b30c95.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-35296ab7.js"),["assets/counter-35296ab7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-238294f2.js"),["assets/inverter-238294f2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-2f620f71.js"),["assets/bat_api-2f620f71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-1de28157.js"),["assets/bat_modbus-1de28157.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-81355be8.js"),["assets/counter-81355be8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-05d57853.js"),["assets/bat-05d57853.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-cc16dae8.js"),["assets/counter-cc16dae8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-7ff062ac.js"),["assets/inverter-7ff062ac.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-347ba16d.js"),["assets/counter-347ba16d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-9db9f949.js"),["assets/counter-9db9f949.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-2cf514ef.js"),["assets/inverter-2cf514ef.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-5231c6c2.js"),["assets/inverter-5231c6c2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-00997c9d.js"),["assets/device-00997c9d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-e7f127ec.js"),["assets/device-e7f127ec.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-4752ed0c.js b/web/settings/assets/HardwareInstallation-4752ed0c.js new file mode 100644 index 0000000000..07436c413b --- /dev/null +++ b/web/settings/assets/HardwareInstallation-4752ed0c.js @@ -0,0 +1 @@ +import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-532a6e75.js";import{_ as e,C as X}from"./index-b772b3e8.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-f0bba54b.js"),["assets/bat-f0bba54b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-50d72e0f.js"),["assets/bat-50d72e0f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-17e6f697.js"),["assets/counter-17e6f697.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-a8d17a4e.js"),["assets/inverter-a8d17a4e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-f915472c.js"),["assets/bat-f915472c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-4514b956.js"),["assets/counter-4514b956.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-ab71cc4b.js"),["assets/inverter-ab71cc4b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-0f04bc4e.js"),["assets/inverter-0f04bc4e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-aed0365b.js"),["assets/bat-aed0365b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-4f701c67.js"),["assets/bat_smart_energy-4f701c67.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-d019a50a.js"),["assets/counter-d019a50a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-56b26147.js"),["assets/device-56b26147.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-9b9fe63d.js"),["assets/inverter-9b9fe63d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-0dc562bb.js"),["assets/counter-0dc562bb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-368823e3.js"),["assets/device-368823e3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-56b26147.js"),["assets/device-56b26147.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-368823e3.js"),["assets/device-368823e3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-0c4a2b3b.js b/web/settings/assets/InstantChargeConfig-3c9fe452.js similarity index 84% rename from web/settings/assets/InstantChargeConfig-0c4a2b3b.js rename to web/settings/assets/InstantChargeConfig-3c9fe452.js index 676041a27a..7f7cef8073 100644 --- a/web/settings/assets/InstantChargeConfig-0c4a2b3b.js +++ b/web/settings/assets/InstantChargeConfig-3c9fe452.js @@ -1 +1 @@ -import{C as l}from"./index-f73a9131.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-b772b3e8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-917626a5.js b/web/settings/assets/LegalSettings-f8408734.js similarity index 84% rename from web/settings/assets/LegalSettings-917626a5.js rename to web/settings/assets/LegalSettings-f8408734.js index 7d0a090e27..a349bef7cd 100644 --- a/web/settings/assets/LegalSettings-917626a5.js +++ b/web/settings/assets/LegalSettings-f8408734.js @@ -1 +1 @@ -import{C as g}from"./index-f73a9131.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-b772b3e8.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-23370c56.js b/web/settings/assets/LoadManagementConfig-2faefad8.js similarity index 95% rename from web/settings/assets/LoadManagementConfig-23370c56.js rename to web/settings/assets/LoadManagementConfig-2faefad8.js index 1d1a03a382..ece1928ffd 100644 --- a/web/settings/assets/LoadManagementConfig-23370c56.js +++ b/web/settings/assets/LoadManagementConfig-2faefad8.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as $}from"./index-f73a9131.js";import{S as x}from"./OpenwbSortableList-db92c83c.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-b772b3e8.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-a0ff7a48.js b/web/settings/assets/MqttBridgeConfig-dc2c20af.js similarity index 95% rename from web/settings/assets/MqttBridgeConfig-a0ff7a48.js rename to web/settings/assets/MqttBridgeConfig-dc2c20af.js index cd02a13ef1..5afb8838bb 100644 --- a/web/settings/assets/MqttBridgeConfig-a0ff7a48.js +++ b/web/settings/assets/MqttBridgeConfig-dc2c20af.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-396ff0d4.js";import{C as D}from"./index-f73a9131.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-b772b3e8.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OpenwbSortableList-db92c83c.js b/web/settings/assets/OpenwbSortableList-7d137bb0.js similarity index 96% rename from web/settings/assets/OpenwbSortableList-db92c83c.js rename to web/settings/assets/OpenwbSortableList-7d137bb0.js index 7c1d7b57d3..718a810c55 100644 --- a/web/settings/assets/OpenwbSortableList-db92c83c.js +++ b/web/settings/assets/OpenwbSortableList-7d137bb0.js @@ -1,4 +1,4 @@ -import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-6e5b23b4.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-396ff0d4.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` +import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-59c39d33.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-532a6e75.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` [a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-8212a288.js"),["assets/displayTheme-8212a288.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-b772b3e8.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-b772b3e8.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-3958a406.js b/web/settings/assets/ScheduledChargeConfig-f93a9bf5.js similarity index 85% rename from web/settings/assets/ScheduledChargeConfig-3958a406.js rename to web/settings/assets/ScheduledChargeConfig-f93a9bf5.js index 8003a5537d..f378876600 100644 --- a/web/settings/assets/ScheduledChargeConfig-3958a406.js +++ b/web/settings/assets/ScheduledChargeConfig-f93a9bf5.js @@ -1 +1 @@ -import{C as g}from"./index-f73a9131.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-b772b3e8.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-eed60d97.js b/web/settings/assets/Status-2f9e22dd.js similarity index 98% rename from web/settings/assets/Status-eed60d97.js rename to web/settings/assets/Status-2f9e22dd.js index 478c8bbca3..3f41508828 100644 --- a/web/settings/assets/Status-eed60d97.js +++ b/web/settings/assets/Status-2f9e22dd.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-f73a9131.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-b772b3e8.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-61d51453.js b/web/settings/assets/Support-007f9ec4.js similarity index 94% rename from web/settings/assets/Support-61d51453.js rename to web/settings/assets/Support-007f9ec4.js index fc059dc2dd..894c96f050 100644 --- a/web/settings/assets/Support-61d51453.js +++ b/web/settings/assets/Support-007f9ec4.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-396ff0d4.js";import{C as B}from"./index-f73a9131.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-b772b3e8.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-a0d6988e.js b/web/settings/assets/System-fff94d77.js similarity index 97% rename from web/settings/assets/System-a0d6988e.js rename to web/settings/assets/System-fff94d77.js index ac3efc1d21..4e53338926 100644 --- a/web/settings/assets/System-a0d6988e.js +++ b/web/settings/assets/System-fff94d77.js @@ -1 +1 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-396ff0d4.js";import{C as E}from"./index-f73a9131.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-b772b3e8.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-8c0031f9.js b/web/settings/assets/TestingStore-73fc83a0.js similarity index 95% rename from web/settings/assets/TestingStore-8c0031f9.js rename to web/settings/assets/TestingStore-73fc83a0.js index 7e2217ad63..d597ac26d2 100644 --- a/web/settings/assets/TestingStore-8c0031f9.js +++ b/web/settings/assets/TestingStore-73fc83a0.js @@ -1 +1 @@ -import{C as h}from"./index-f73a9131.js";import{S as y}from"./OpenwbSortableList-db92c83c.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-b772b3e8.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-e6a22d8f.js b/web/settings/assets/TimeChargeConfig-8875b0c6.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-e6a22d8f.js rename to web/settings/assets/TimeChargeConfig-8875b0c6.js index 4c4bf7f413..fbe0fa8c3b 100644 --- a/web/settings/assets/TimeChargeConfig-e6a22d8f.js +++ b/web/settings/assets/TimeChargeConfig-8875b0c6.js @@ -1 +1 @@ -import{C as l}from"./index-f73a9131.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-b772b3e8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-77586afa.js b/web/settings/assets/VehicleConfig-7ad05e57.js similarity index 94% rename from web/settings/assets/VehicleConfig-77586afa.js rename to web/settings/assets/VehicleConfig-7ad05e57.js index 5a7c9cc73a..8d73bd4793 100644 --- a/web/settings/assets/VehicleConfig-77586afa.js +++ b/web/settings/assets/VehicleConfig-7ad05e57.js @@ -1 +1 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-396ff0d4.js";import{_ as S,C as ie}from"./index-f73a9131.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-e76a744b.js"),["assets/vehicle-e76a744b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-e146fe0e.js"),["assets/vehicle-e146fe0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-4b98a311.js"),["assets/vehicle-4b98a311.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-c5a65e75.js"),["assets/vehicle-c5a65e75.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-e377a977.js"),["assets/vehicle-e377a977.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-7cd93604.js"),["assets/vehicle-7cd93604.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-20cc743a.js"),["assets/vehicle-20cc743a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-6c139591.js"),["assets/vehicle-6c139591.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-50dd5eb2.js"),["assets/vehicle-50dd5eb2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-85f19442.js"),["assets/vehicle-85f19442.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-575fb854.js"),["assets/vehicle-575fb854.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-c96cd902.js"),["assets/vehicle-c96cd902.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-86f7a224.js","assets/index-f73a9131.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-eb74ae86.js"),["assets/vehicle-eb74ae86.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; +import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-b772b3e8.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-8923672d.js"),["assets/vehicle-8923672d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-b772b3e8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/backup_cloud-b6c73543.js b/web/settings/assets/backup_cloud-99033254.js similarity index 96% rename from web/settings/assets/backup_cloud-b6c73543.js rename to web/settings/assets/backup_cloud-99033254.js index bfa2c7b52c..bf15f76b6e 100644 --- a/web/settings/assets/backup_cloud-b6c73543.js +++ b/web/settings/assets/backup_cloud-99033254.js @@ -1 +1 @@ -import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/backup_cloud-f9884751.js b/web/settings/assets/backup_cloud-e2986e8e.js similarity index 92% rename from web/settings/assets/backup_cloud-f9884751.js rename to web/settings/assets/backup_cloud-e2986e8e.js index 0d3ed3e85f..4c0b1db39f 100644 --- a/web/settings/assets/backup_cloud-f9884751.js +++ b/web/settings/assets/backup_cloud-e2986e8e.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-6c7e4549.js b/web/settings/assets/bat-0735bfb3.js similarity index 85% rename from web/settings/assets/bat-6c7e4549.js rename to web/settings/assets/bat-0735bfb3.js index 8637702c3b..eec115e327 100644 --- a/web/settings/assets/bat-6c7e4549.js +++ b/web/settings/assets/bat-0735bfb3.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-e9bd65aa.js b/web/settings/assets/bat-0f0a85bc.js similarity index 86% rename from web/settings/assets/bat-e9bd65aa.js rename to web/settings/assets/bat-0f0a85bc.js index 24cf0bff7b..7db03f6844 100644 --- a/web/settings/assets/bat-e9bd65aa.js +++ b/web/settings/assets/bat-0f0a85bc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-0dc7df81.js b/web/settings/assets/bat-1761bb8c.js similarity index 85% rename from web/settings/assets/bat-0dc7df81.js rename to web/settings/assets/bat-1761bb8c.js index 1898a9dd68..4d2b101ad0 100644 --- a/web/settings/assets/bat-0dc7df81.js +++ b/web/settings/assets/bat-1761bb8c.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-78371791.js b/web/settings/assets/bat-1edb0ead.js similarity index 85% rename from web/settings/assets/bat-78371791.js rename to web/settings/assets/bat-1edb0ead.js index 4e68b7d5ea..a5918ec61a 100644 --- a/web/settings/assets/bat-78371791.js +++ b/web/settings/assets/bat-1edb0ead.js @@ -1 +1 @@ -import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-9cf99a8b.js b/web/settings/assets/bat-2cb7fcb7.js similarity index 86% rename from web/settings/assets/bat-9cf99a8b.js rename to web/settings/assets/bat-2cb7fcb7.js index 4b2d50a9ab..24868abeb2 100644 --- a/web/settings/assets/bat-9cf99a8b.js +++ b/web/settings/assets/bat-2cb7fcb7.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-05d57853.js b/web/settings/assets/bat-374aadf3.js similarity index 87% rename from web/settings/assets/bat-05d57853.js rename to web/settings/assets/bat-374aadf3.js index c2bb38bcaf..d6899f5132 100644 --- a/web/settings/assets/bat-05d57853.js +++ b/web/settings/assets/bat-374aadf3.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-747ec82c.js b/web/settings/assets/bat-41d251bc.js similarity index 86% rename from web/settings/assets/bat-747ec82c.js rename to web/settings/assets/bat-41d251bc.js index 780e68b37c..f0645392ac 100644 --- a/web/settings/assets/bat-747ec82c.js +++ b/web/settings/assets/bat-41d251bc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f32f983a.js b/web/settings/assets/bat-4f8ed3c9.js similarity index 94% rename from web/settings/assets/bat-f32f983a.js rename to web/settings/assets/bat-4f8ed3c9.js index 4f4ed48b78..0a0dffcf87 100644 --- a/web/settings/assets/bat-f32f983a.js +++ b/web/settings/assets/bat-4f8ed3c9.js @@ -1 +1 @@ -import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; +import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; diff --git a/web/settings/assets/bat-b860d161.js b/web/settings/assets/bat-50d72e0f.js similarity index 88% rename from web/settings/assets/bat-b860d161.js rename to web/settings/assets/bat-50d72e0f.js index 7a38b1180e..2fd52037f1 100644 --- a/web/settings/assets/bat-b860d161.js +++ b/web/settings/assets/bat-50d72e0f.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-6a774d77.js b/web/settings/assets/bat-57cb095c.js similarity index 90% rename from web/settings/assets/bat-6a774d77.js rename to web/settings/assets/bat-57cb095c.js index 05b03f06e8..e34faad463 100644 --- a/web/settings/assets/bat-6a774d77.js +++ b/web/settings/assets/bat-57cb095c.js @@ -1 +1 @@ -import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-9fa50fa7.js b/web/settings/assets/bat-5a3aee6e.js similarity index 86% rename from web/settings/assets/bat-9fa50fa7.js rename to web/settings/assets/bat-5a3aee6e.js index 9cd6437f41..fd95429d1f 100644 --- a/web/settings/assets/bat-9fa50fa7.js +++ b/web/settings/assets/bat-5a3aee6e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-7892c6ff.js b/web/settings/assets/bat-701b11a5.js similarity index 86% rename from web/settings/assets/bat-7892c6ff.js rename to web/settings/assets/bat-701b11a5.js index 11bd35fb05..6d7f056add 100644 --- a/web/settings/assets/bat-7892c6ff.js +++ b/web/settings/assets/bat-701b11a5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-862fe547.js b/web/settings/assets/bat-8594bebd.js similarity index 93% rename from web/settings/assets/bat-862fe547.js rename to web/settings/assets/bat-8594bebd.js index 9138399a55..e12c639625 100644 --- a/web/settings/assets/bat-862fe547.js +++ b/web/settings/assets/bat-8594bebd.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; +import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-c86a746f.js b/web/settings/assets/bat-86e9bc80.js similarity index 86% rename from web/settings/assets/bat-c86a746f.js rename to web/settings/assets/bat-86e9bc80.js index fea4a1d17a..0626002506 100644 --- a/web/settings/assets/bat-c86a746f.js +++ b/web/settings/assets/bat-86e9bc80.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-96b30c95.js b/web/settings/assets/bat-94ced6ef.js similarity index 86% rename from web/settings/assets/bat-96b30c95.js rename to web/settings/assets/bat-94ced6ef.js index 1f6bd9f640..5acd924931 100644 --- a/web/settings/assets/bat-96b30c95.js +++ b/web/settings/assets/bat-94ced6ef.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-ec186c85.js b/web/settings/assets/bat-974e5d23.js similarity index 86% rename from web/settings/assets/bat-ec186c85.js rename to web/settings/assets/bat-974e5d23.js index c688cad172..6be248526d 100644 --- a/web/settings/assets/bat-ec186c85.js +++ b/web/settings/assets/bat-974e5d23.js @@ -1 +1 @@ -import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; +import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-8d465039.js b/web/settings/assets/bat-9ba92541.js similarity index 85% rename from web/settings/assets/bat-8d465039.js rename to web/settings/assets/bat-9ba92541.js index 0351ddceff..299361a024 100644 --- a/web/settings/assets/bat-8d465039.js +++ b/web/settings/assets/bat-9ba92541.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-b9b268e2.js b/web/settings/assets/bat-9e87a8db.js similarity index 87% rename from web/settings/assets/bat-b9b268e2.js rename to web/settings/assets/bat-9e87a8db.js index 182bc38726..274b288996 100644 --- a/web/settings/assets/bat-b9b268e2.js +++ b/web/settings/assets/bat-9e87a8db.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-e83535a3.js b/web/settings/assets/bat-aaa94877.js similarity index 96% rename from web/settings/assets/bat-e83535a3.js rename to web/settings/assets/bat-aaa94877.js index a5eb78b8e7..00fe921c46 100644 --- a/web/settings/assets/bat-e83535a3.js +++ b/web/settings/assets/bat-aaa94877.js @@ -1 +1 @@ -import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; +import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-8e5275f9.js b/web/settings/assets/bat-ad02ebbd.js similarity index 93% rename from web/settings/assets/bat-8e5275f9.js rename to web/settings/assets/bat-ad02ebbd.js index 5ba66bdebb..1a599a958e 100644 --- a/web/settings/assets/bat-8e5275f9.js +++ b/web/settings/assets/bat-ad02ebbd.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; +import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-aea49a4e.js b/web/settings/assets/bat-aed0365b.js similarity index 86% rename from web/settings/assets/bat-aea49a4e.js rename to web/settings/assets/bat-aed0365b.js index f770053b5f..3fd9fb7fee 100644 --- a/web/settings/assets/bat-aea49a4e.js +++ b/web/settings/assets/bat-aed0365b.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-bd482ff6.js b/web/settings/assets/bat-c9c9c592.js similarity index 87% rename from web/settings/assets/bat-bd482ff6.js rename to web/settings/assets/bat-c9c9c592.js index 2b26315cdf..f32a1eb37b 100644 --- a/web/settings/assets/bat-bd482ff6.js +++ b/web/settings/assets/bat-c9c9c592.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-552bb794.js b/web/settings/assets/bat-d030cd24.js similarity index 86% rename from web/settings/assets/bat-552bb794.js rename to web/settings/assets/bat-d030cd24.js index f47142cccf..7418c40bdb 100644 --- a/web/settings/assets/bat-552bb794.js +++ b/web/settings/assets/bat-d030cd24.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-56e740de.js b/web/settings/assets/bat-d3c76890.js similarity index 86% rename from web/settings/assets/bat-56e740de.js rename to web/settings/assets/bat-d3c76890.js index 19860a8fa0..fcb3f72202 100644 --- a/web/settings/assets/bat-56e740de.js +++ b/web/settings/assets/bat-d3c76890.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-5027e2dc.js b/web/settings/assets/bat-dc75c3bc.js similarity index 86% rename from web/settings/assets/bat-5027e2dc.js rename to web/settings/assets/bat-dc75c3bc.js index 4344ec61ba..7937b419b6 100644 --- a/web/settings/assets/bat-5027e2dc.js +++ b/web/settings/assets/bat-dc75c3bc.js @@ -1 +1 @@ -import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; +import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-a812139b.js b/web/settings/assets/bat-e7a43b7b.js similarity index 86% rename from web/settings/assets/bat-a812139b.js rename to web/settings/assets/bat-e7a43b7b.js index 9d1aea5666..ff455b9147 100644 --- a/web/settings/assets/bat-a812139b.js +++ b/web/settings/assets/bat-e7a43b7b.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-3a522162.js b/web/settings/assets/bat-f0bba54b.js similarity index 88% rename from web/settings/assets/bat-3a522162.js rename to web/settings/assets/bat-f0bba54b.js index 8759e37e70..960c7a2c0d 100644 --- a/web/settings/assets/bat-3a522162.js +++ b/web/settings/assets/bat-f0bba54b.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-ce75f78c.js b/web/settings/assets/bat-f7664e62.js similarity index 94% rename from web/settings/assets/bat-ce75f78c.js rename to web/settings/assets/bat-f7664e62.js index 5969d3a747..0d8a9b746a 100644 --- a/web/settings/assets/bat-ce75f78c.js +++ b/web/settings/assets/bat-f7664e62.js @@ -1 +1 @@ -import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; +import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-9c4cb66b.js b/web/settings/assets/bat-f89e85e8.js similarity index 86% rename from web/settings/assets/bat-9c4cb66b.js rename to web/settings/assets/bat-f89e85e8.js index ff7a6a9874..4d61e35e01 100644 --- a/web/settings/assets/bat-9c4cb66b.js +++ b/web/settings/assets/bat-f89e85e8.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-2c2c1739.js b/web/settings/assets/bat-f915472c.js similarity index 90% rename from web/settings/assets/bat-2c2c1739.js rename to web/settings/assets/bat-f915472c.js index 17e031fee5..b3480ab719 100644 --- a/web/settings/assets/bat-2c2c1739.js +++ b/web/settings/assets/bat-f915472c.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,B,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{D as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,B,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{D as default}; diff --git a/web/settings/assets/bat-34292ed1.js b/web/settings/assets/bat-fe54661f.js similarity index 86% rename from web/settings/assets/bat-34292ed1.js rename to web/settings/assets/bat-fe54661f.js index 80ee10fe98..2da04e8e58 100644 --- a/web/settings/assets/bat-34292ed1.js +++ b/web/settings/assets/bat-fe54661f.js @@ -1 +1 @@ -import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; +import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_api-2f620f71.js b/web/settings/assets/bat_api-83f4eb5d.js similarity index 86% rename from web/settings/assets/bat_api-2f620f71.js rename to web/settings/assets/bat_api-83f4eb5d.js index 97a3c1e3a8..0ea5ac87e0 100644 --- a/web/settings/assets/bat_api-2f620f71.js +++ b/web/settings/assets/bat_api-83f4eb5d.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; +import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_modbus-1de28157.js b/web/settings/assets/bat_modbus-b77c2017.js similarity index 86% rename from web/settings/assets/bat_modbus-1de28157.js rename to web/settings/assets/bat_modbus-b77c2017.js index a8df89b639..c717626317 100644 --- a/web/settings/assets/bat_modbus-1de28157.js +++ b/web/settings/assets/bat_modbus-b77c2017.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_smart_energy-f1604c00.js b/web/settings/assets/bat_smart_energy-4f701c67.js similarity index 86% rename from web/settings/assets/bat_smart_energy-f1604c00.js rename to web/settings/assets/bat_smart_energy-4f701c67.js index 29478fa73d..475ca0aee0 100644 --- a/web/settings/assets/bat_smart_energy-f1604c00.js +++ b/web/settings/assets/bat_smart_energy-4f701c67.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{$ as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{$ as default}; diff --git a/web/settings/assets/chargePoint-84db1946.js b/web/settings/assets/chargePoint-33a12343.js similarity index 94% rename from web/settings/assets/chargePoint-84db1946.js rename to web/settings/assets/chargePoint-33a12343.js index 6bfa8eb106..892542c0d2 100644 --- a/web/settings/assets/chargePoint-84db1946.js +++ b/web/settings/assets/chargePoint-33a12343.js @@ -1 +1 @@ -import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; +import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-04c96676.js b/web/settings/assets/chargePoint-651f8f5f.js similarity index 84% rename from web/settings/assets/chargePoint-04c96676.js rename to web/settings/assets/chargePoint-651f8f5f.js index 1c4d0d724b..80e9c0143d 100644 --- a/web/settings/assets/chargePoint-04c96676.js +++ b/web/settings/assets/chargePoint-651f8f5f.js @@ -1 +1 @@ -import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; +import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-83c5fa5d.js b/web/settings/assets/chargePoint-6a041309.js similarity index 92% rename from web/settings/assets/chargePoint-83c5fa5d.js rename to web/settings/assets/chargePoint-6a041309.js index 1908bda98f..68e386cf80 100644 --- a/web/settings/assets/chargePoint-83c5fa5d.js +++ b/web/settings/assets/chargePoint-6a041309.js @@ -1 +1 @@ -import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; +import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-dc724714.js b/web/settings/assets/chargePoint-a0a4acbf.js similarity index 95% rename from web/settings/assets/chargePoint-dc724714.js rename to web/settings/assets/chargePoint-a0a4acbf.js index b0ea471815..535af45d50 100644 --- a/web/settings/assets/chargePoint-dc724714.js +++ b/web/settings/assets/chargePoint-a0a4acbf.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; +import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-10dd26b7.js b/web/settings/assets/chargePoint-c1796cd6.js similarity index 98% rename from web/settings/assets/chargePoint-10dd26b7.js rename to web/settings/assets/chargePoint-c1796cd6.js index 03067af939..98d1627d3f 100644 --- a/web/settings/assets/chargePoint-10dd26b7.js +++ b/web/settings/assets/chargePoint-c1796cd6.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; +import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; diff --git a/web/settings/assets/chargePoint-7389b890.js b/web/settings/assets/chargePoint-fe6ccb61.js similarity index 95% rename from web/settings/assets/chargePoint-7389b890.js rename to web/settings/assets/chargePoint-fe6ccb61.js index 71244dcae3..5668492791 100644 --- a/web/settings/assets/chargePoint-7389b890.js +++ b/web/settings/assets/chargePoint-fe6ccb61.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; +import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/commands-022bb19a.js b/web/settings/assets/commands-0085051f.js similarity index 96% rename from web/settings/assets/commands-022bb19a.js rename to web/settings/assets/commands-0085051f.js index 2f7bb693fa..61e80bb806 100644 --- a/web/settings/assets/commands-022bb19a.js +++ b/web/settings/assets/commands-0085051f.js @@ -1 +1 @@ -import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; +import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-b60b6e4a.js b/web/settings/assets/counter-091a96b7.js similarity index 88% rename from web/settings/assets/counter-b60b6e4a.js rename to web/settings/assets/counter-091a96b7.js index 060a95e3ce..169c01cddd 100644 --- a/web/settings/assets/counter-b60b6e4a.js +++ b/web/settings/assets/counter-091a96b7.js @@ -1 +1 @@ -import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; +import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f9804b26.js b/web/settings/assets/counter-0dc562bb.js similarity index 90% rename from web/settings/assets/counter-f9804b26.js rename to web/settings/assets/counter-0dc562bb.js index 4ef0b35edb..1c39106d52 100644 --- a/web/settings/assets/counter-f9804b26.js +++ b/web/settings/assets/counter-0dc562bb.js @@ -1 +1 @@ -import{_ as c,p as s,k as u,l as p,A as r,L as a,u as t,q as e,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},m={class:"device-solar_log-counter"},f={class:"small"},g=e("span",{class:"text-danger"},[t(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),e("br")],-1),h=e("a",{href:"https://github.com/openWB/core/pull/934/files",target:"_blank",rel:"noopener noreferrer"}," https://github.com/openWB/core/pull/934/files ",-1);function b(o,n,v,k,w,B){const i=s("openwb-base-heading"),l=s("openwb-base-alert");return u(),p("div",m,[r(i,null,{default:a(()=>[t(" Einstellungen für Solar-Log Zähler "),e("span",f,"(Modul: "+d(o.$options.name)+")",1)]),_:1}),r(l,{subtype:"info"},{default:a(()=>[g,t(" 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 hier: "),h]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; +import{_ as c,p as s,k as u,l as p,A as r,L as a,u as t,q as e,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},m={class:"device-solar_log-counter"},f={class:"small"},g=e("span",{class:"text-danger"},[t(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),e("br")],-1),h=e("a",{href:"https://github.com/openWB/core/pull/934/files",target:"_blank",rel:"noopener noreferrer"}," https://github.com/openWB/core/pull/934/files ",-1);function b(o,n,v,k,w,B){const i=s("openwb-base-heading"),l=s("openwb-base-alert");return u(),p("div",m,[r(i,null,{default:a(()=>[t(" Einstellungen für Solar-Log Zähler "),e("span",f,"(Modul: "+d(o.$options.name)+")",1)]),_:1}),r(l,{subtype:"info"},{default:a(()=>[g,t(" 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 hier: "),h]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-8142b909.js b/web/settings/assets/counter-122dd37a.js similarity index 86% rename from web/settings/assets/counter-8142b909.js rename to web/settings/assets/counter-122dd37a.js index ed6dcd0bcd..cc1f609896 100644 --- a/web/settings/assets/counter-8142b909.js +++ b/web/settings/assets/counter-122dd37a.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-c22cfbf7.js b/web/settings/assets/counter-17e6f697.js similarity index 88% rename from web/settings/assets/counter-c22cfbf7.js rename to web/settings/assets/counter-17e6f697.js index 92ec092a7d..49e73d969a 100644 --- a/web/settings/assets/counter-c22cfbf7.js +++ b/web/settings/assets/counter-17e6f697.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const C=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const C=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-746d0e2d.js b/web/settings/assets/counter-1aee48a7.js similarity index 93% rename from web/settings/assets/counter-746d0e2d.js rename to web/settings/assets/counter-1aee48a7.js index c817162536..f714278c6e 100644 --- a/web/settings/assets/counter-746d0e2d.js +++ b/web/settings/assets/counter-1aee48a7.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-4bfdc2cd.js b/web/settings/assets/counter-1dc0e174.js similarity index 86% rename from web/settings/assets/counter-4bfdc2cd.js rename to web/settings/assets/counter-1dc0e174.js index 7f2d8de507..b462db6f1c 100644 --- a/web/settings/assets/counter-4bfdc2cd.js +++ b/web/settings/assets/counter-1dc0e174.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f1ea356e.js b/web/settings/assets/counter-27a9c2ee.js similarity index 90% rename from web/settings/assets/counter-f1ea356e.js rename to web/settings/assets/counter-27a9c2ee.js index 9f0ad0df19..fa531f9f54 100644 --- a/web/settings/assets/counter-f1ea356e.js +++ b/web/settings/assets/counter-27a9c2ee.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; +import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-ea469ce2.js b/web/settings/assets/counter-29ac2dbe.js similarity index 86% rename from web/settings/assets/counter-ea469ce2.js rename to web/settings/assets/counter-29ac2dbe.js index cf7482fc70..cb630858ae 100644 --- a/web/settings/assets/counter-ea469ce2.js +++ b/web/settings/assets/counter-29ac2dbe.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-5643a400.js b/web/settings/assets/counter-2d2082cf.js similarity index 91% rename from web/settings/assets/counter-5643a400.js rename to web/settings/assets/counter-2d2082cf.js index ba3efa4c05..955761add9 100644 --- a/web/settings/assets/counter-5643a400.js +++ b/web/settings/assets/counter-2d2082cf.js @@ -1 +1 @@ -import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; +import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-dc28491c.js b/web/settings/assets/counter-2d7380c9.js similarity index 87% rename from web/settings/assets/counter-dc28491c.js rename to web/settings/assets/counter-2d7380c9.js index a0ddc6e0a3..d6ab6f1a10 100644 --- a/web/settings/assets/counter-dc28491c.js +++ b/web/settings/assets/counter-2d7380c9.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-9b94bf71.js b/web/settings/assets/counter-2daf569f.js similarity index 96% rename from web/settings/assets/counter-9b94bf71.js rename to web/settings/assets/counter-2daf569f.js index 84835022ad..151098ded5 100644 --- a/web/settings/assets/counter-9b94bf71.js +++ b/web/settings/assets/counter-2daf569f.js @@ -1 +1 @@ -import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; +import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; diff --git a/web/settings/assets/counter-1d0f3892.js b/web/settings/assets/counter-30000cd2.js similarity index 86% rename from web/settings/assets/counter-1d0f3892.js rename to web/settings/assets/counter-30000cd2.js index ace70f6b5f..fa87cef5f1 100644 --- a/web/settings/assets/counter-1d0f3892.js +++ b/web/settings/assets/counter-30000cd2.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-02f588be.js b/web/settings/assets/counter-333c1a6d.js similarity index 87% rename from web/settings/assets/counter-02f588be.js rename to web/settings/assets/counter-333c1a6d.js index f80c6b7a23..5e787bff99 100644 --- a/web/settings/assets/counter-02f588be.js +++ b/web/settings/assets/counter-333c1a6d.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-dc4e356a.js b/web/settings/assets/counter-34bc9327.js similarity index 85% rename from web/settings/assets/counter-dc4e356a.js rename to web/settings/assets/counter-34bc9327.js index a6b6d7754b..d019c2ec26 100644 --- a/web/settings/assets/counter-dc4e356a.js +++ b/web/settings/assets/counter-34bc9327.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-9db9f949.js b/web/settings/assets/counter-36353861.js similarity index 92% rename from web/settings/assets/counter-9db9f949.js rename to web/settings/assets/counter-36353861.js index 7040c62b83..657fa805bb 100644 --- a/web/settings/assets/counter-9db9f949.js +++ b/web/settings/assets/counter-36353861.js @@ -1 +1 @@ -import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; +import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-b9602155.js b/web/settings/assets/counter-373a1c10.js similarity index 86% rename from web/settings/assets/counter-b9602155.js rename to web/settings/assets/counter-373a1c10.js index bb90228341..f2fce3a239 100644 --- a/web/settings/assets/counter-b9602155.js +++ b/web/settings/assets/counter-373a1c10.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; diff --git a/web/settings/assets/counter-ee7b7fc2.js b/web/settings/assets/counter-3aa24e62.js similarity index 85% rename from web/settings/assets/counter-ee7b7fc2.js rename to web/settings/assets/counter-3aa24e62.js index 203501d4ce..372ade3a74 100644 --- a/web/settings/assets/counter-ee7b7fc2.js +++ b/web/settings/assets/counter-3aa24e62.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-26ce225d.js b/web/settings/assets/counter-4514b956.js similarity index 90% rename from web/settings/assets/counter-26ce225d.js rename to web/settings/assets/counter-4514b956.js index a51d86f1c9..3f025a7056 100644 --- a/web/settings/assets/counter-26ce225d.js +++ b/web/settings/assets/counter-4514b956.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,h,B,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const V=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{V as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,h,B,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const V=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-0b0f0c4e.js b/web/settings/assets/counter-596d7121.js similarity index 89% rename from web/settings/assets/counter-0b0f0c4e.js rename to web/settings/assets/counter-596d7121.js index 483975aaa9..6f8fd2a345 100644 --- a/web/settings/assets/counter-0b0f0c4e.js +++ b/web/settings/assets/counter-596d7121.js @@ -1 +1 @@ -import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; +import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-cd468b50.js b/web/settings/assets/counter-5c24ebc7.js similarity index 86% rename from web/settings/assets/counter-cd468b50.js rename to web/settings/assets/counter-5c24ebc7.js index 262eb8dd44..4748923dea 100644 --- a/web/settings/assets/counter-cd468b50.js +++ b/web/settings/assets/counter-5c24ebc7.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-7f35a959.js b/web/settings/assets/counter-66249572.js similarity index 86% rename from web/settings/assets/counter-7f35a959.js rename to web/settings/assets/counter-66249572.js index 6e30fcfb1e..ed976ef352 100644 --- a/web/settings/assets/counter-7f35a959.js +++ b/web/settings/assets/counter-66249572.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-816bc001.js b/web/settings/assets/counter-6d9b8554.js similarity index 88% rename from web/settings/assets/counter-816bc001.js rename to web/settings/assets/counter-6d9b8554.js index ce944a5267..979fc32228 100644 --- a/web/settings/assets/counter-816bc001.js +++ b/web/settings/assets/counter-6d9b8554.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-ba947ca5.js b/web/settings/assets/counter-74542c06.js similarity index 86% rename from web/settings/assets/counter-ba947ca5.js rename to web/settings/assets/counter-74542c06.js index 91891e506b..89248d9de6 100644 --- a/web/settings/assets/counter-ba947ca5.js +++ b/web/settings/assets/counter-74542c06.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-0a70ba4e.js b/web/settings/assets/counter-8003bfd1.js similarity index 86% rename from web/settings/assets/counter-0a70ba4e.js rename to web/settings/assets/counter-8003bfd1.js index 9fc29b8cbe..bbd2270982 100644 --- a/web/settings/assets/counter-0a70ba4e.js +++ b/web/settings/assets/counter-8003bfd1.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-81355be8.js b/web/settings/assets/counter-836555cd.js similarity index 86% rename from web/settings/assets/counter-81355be8.js rename to web/settings/assets/counter-836555cd.js index eddd887a05..ada99df79b 100644 --- a/web/settings/assets/counter-81355be8.js +++ b/web/settings/assets/counter-836555cd.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-db44398b.js b/web/settings/assets/counter-87037b08.js similarity index 86% rename from web/settings/assets/counter-db44398b.js rename to web/settings/assets/counter-87037b08.js index 6a490e9a6d..2ed4ee4736 100644 --- a/web/settings/assets/counter-db44398b.js +++ b/web/settings/assets/counter-87037b08.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-d3d1ea3f.js b/web/settings/assets/counter-8741a800.js similarity index 85% rename from web/settings/assets/counter-d3d1ea3f.js rename to web/settings/assets/counter-8741a800.js index 1efa48d633..a50d1080c7 100644 --- a/web/settings/assets/counter-d3d1ea3f.js +++ b/web/settings/assets/counter-8741a800.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-35296ab7.js b/web/settings/assets/counter-88eb412e.js similarity index 87% rename from web/settings/assets/counter-35296ab7.js rename to web/settings/assets/counter-88eb412e.js index 98e34953f8..fb29c57c41 100644 --- a/web/settings/assets/counter-35296ab7.js +++ b/web/settings/assets/counter-88eb412e.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-d1b5bc9e.js b/web/settings/assets/counter-8fdb9d26.js similarity index 91% rename from web/settings/assets/counter-d1b5bc9e.js rename to web/settings/assets/counter-8fdb9d26.js index 938722c847..b2418bec3d 100644 --- a/web/settings/assets/counter-d1b5bc9e.js +++ b/web/settings/assets/counter-8fdb9d26.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-a17994d5.js b/web/settings/assets/counter-96604727.js similarity index 90% rename from web/settings/assets/counter-a17994d5.js rename to web/settings/assets/counter-96604727.js index 36274c97bd..1325107ca5 100644 --- a/web/settings/assets/counter-a17994d5.js +++ b/web/settings/assets/counter-96604727.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-cef05356.js b/web/settings/assets/counter-b5fad35e.js similarity index 97% rename from web/settings/assets/counter-cef05356.js rename to web/settings/assets/counter-b5fad35e.js index b6bfd37d02..49711f6bce 100644 --- a/web/settings/assets/counter-cef05356.js +++ b/web/settings/assets/counter-b5fad35e.js @@ -1 +1 @@ -import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; +import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-347ba16d.js b/web/settings/assets/counter-bac10632.js similarity index 90% rename from web/settings/assets/counter-347ba16d.js rename to web/settings/assets/counter-bac10632.js index 0a7b61871b..de33854142 100644 --- a/web/settings/assets/counter-347ba16d.js +++ b/web/settings/assets/counter-bac10632.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; +import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-15317c83.js b/web/settings/assets/counter-be7ebe08.js similarity index 86% rename from web/settings/assets/counter-15317c83.js rename to web/settings/assets/counter-be7ebe08.js index 7fedd2ac49..553254853a 100644 --- a/web/settings/assets/counter-15317c83.js +++ b/web/settings/assets/counter-be7ebe08.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-c1ba1c51.js b/web/settings/assets/counter-c1ba1c51.js deleted file mode 100644 index ef56d62a07..0000000000 --- a/web/settings/assets/counter-c1ba1c51.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m,p as l,k as c,l as f,A as o,L as r,u as n,q as u,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},b={class:"small"},h=u("br",null,null,-1);function v(i,e,a,j,x,d){const p=l("openwb-base-heading"),s=l("openwb-base-text-input");return c(),f("div",w,[o(p,null,{default:r(()=>[n(" Einstellungen für JSON Zähler "),u("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),o(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>d.updateConfiguration(t,"configuration.jq_power"))},{help:r(()=>[n(' 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. '),h,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"]),o(s,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>d.updateConfiguration(t,"configuration.jq_imported"))},{help:r(()=>[n(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),o(s,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>d.updateConfiguration(t,"configuration.jq_exported"))},{help:r(()=>[n(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{P as default}; diff --git a/web/settings/assets/counter-c8a6ec77.js b/web/settings/assets/counter-c8a6ec77.js new file mode 100644 index 0000000000..d478b462f9 --- /dev/null +++ b/web/settings/assets/counter-c8a6ec77.js @@ -0,0 +1 @@ +import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-269f6e9f.js b/web/settings/assets/counter-d019a50a.js similarity index 86% rename from web/settings/assets/counter-269f6e9f.js rename to web/settings/assets/counter-d019a50a.js index c7e93c786a..db2a3e0626 100644 --- a/web/settings/assets/counter-269f6e9f.js +++ b/web/settings/assets/counter-d019a50a.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as p,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as p,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-cc16dae8.js b/web/settings/assets/counter-d6b54631.js similarity index 90% rename from web/settings/assets/counter-cc16dae8.js rename to web/settings/assets/counter-d6b54631.js index 2a61049c86..9fbd077e4e 100644 --- a/web/settings/assets/counter-cc16dae8.js +++ b/web/settings/assets/counter-d6b54631.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; +import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-56fdc27e.js b/web/settings/assets/counter-dc035a3e.js similarity index 86% rename from web/settings/assets/counter-56fdc27e.js rename to web/settings/assets/counter-dc035a3e.js index 8530f7048b..29a2299749 100644 --- a/web/settings/assets/counter-56fdc27e.js +++ b/web/settings/assets/counter-dc035a3e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f29aec2b.js b/web/settings/assets/counter-e3b8a3fa.js similarity index 86% rename from web/settings/assets/counter-f29aec2b.js rename to web/settings/assets/counter-e3b8a3fa.js index c6f2ff8aa1..54ee581a8a 100644 --- a/web/settings/assets/counter-f29aec2b.js +++ b/web/settings/assets/counter-e3b8a3fa.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-2df223d5.js b/web/settings/assets/counter-e44eee41.js similarity index 86% rename from web/settings/assets/counter-2df223d5.js rename to web/settings/assets/counter-e44eee41.js index 7cc6ecfa40..c2cf10570e 100644 --- a/web/settings/assets/counter-2df223d5.js +++ b/web/settings/assets/counter-e44eee41.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-4b4b6fcb.js b/web/settings/assets/counter-e9ec98c5.js similarity index 89% rename from web/settings/assets/counter-4b4b6fcb.js rename to web/settings/assets/counter-e9ec98c5.js index 77b770a23c..e5272b040f 100644 --- a/web/settings/assets/counter-4b4b6fcb.js +++ b/web/settings/assets/counter-e9ec98c5.js @@ -1 +1 @@ -import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-75067630.js b/web/settings/assets/counter-f3278b0c.js similarity index 88% rename from web/settings/assets/counter-75067630.js rename to web/settings/assets/counter-f3278b0c.js index 34f63c4096..13acad6b55 100644 --- a/web/settings/assets/counter-75067630.js +++ b/web/settings/assets/counter-f3278b0c.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; diff --git a/web/settings/assets/counter-8e5b4e19.js b/web/settings/assets/counter-fa32a0cf.js similarity index 86% rename from web/settings/assets/counter-8e5b4e19.js rename to web/settings/assets/counter-fa32a0cf.js index 9376ecab71..eb4971e375 100644 --- a/web/settings/assets/counter-8e5b4e19.js +++ b/web/settings/assets/counter-fa32a0cf.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_s0-55cbf638.js b/web/settings/assets/counter_s0-764584ba.js similarity index 86% rename from web/settings/assets/counter_s0-55cbf638.js rename to web/settings/assets/counter_s0-764584ba.js index 3a71abc701..24b5888094 100644 --- a/web/settings/assets/counter_s0-55cbf638.js +++ b/web/settings/assets/counter_s0-764584ba.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; +import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-b8d44e45.js b/web/settings/assets/counter_sm-ea82381f.js similarity index 96% rename from web/settings/assets/counter_sm-b8d44e45.js rename to web/settings/assets/counter_sm-ea82381f.js index 7727cffe90..ca3c9898f2 100644 --- a/web/settings/assets/counter_sm-b8d44e45.js +++ b/web/settings/assets/counter_sm-ea82381f.js @@ -1 +1 @@ -import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; +import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-d36a7958.js b/web/settings/assets/device-007ca4fb.js similarity index 85% rename from web/settings/assets/device-d36a7958.js rename to web/settings/assets/device-007ca4fb.js index 9ed3e78129..4c5881ca3e 100644 --- a/web/settings/assets/device-d36a7958.js +++ b/web/settings/assets/device-007ca4fb.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-cbfffa6e.js b/web/settings/assets/device-0ac32d64.js similarity index 91% rename from web/settings/assets/device-cbfffa6e.js rename to web/settings/assets/device-0ac32d64.js index 75c3cfd294..89f17db744 100644 --- a/web/settings/assets/device-cbfffa6e.js +++ b/web/settings/assets/device-0ac32d64.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-c1fd6c65.js b/web/settings/assets/device-163e7968.js similarity index 87% rename from web/settings/assets/device-c1fd6c65.js rename to web/settings/assets/device-163e7968.js index 8f4b653504..82221bf000 100644 --- a/web/settings/assets/device-c1fd6c65.js +++ b/web/settings/assets/device-163e7968.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-0fcb1898.js b/web/settings/assets/device-1ae9d038.js similarity index 94% rename from web/settings/assets/device-0fcb1898.js rename to web/settings/assets/device-1ae9d038.js index 5c1d042a7e..351d664fb9 100644 --- a/web/settings/assets/device-0fcb1898.js +++ b/web/settings/assets/device-1ae9d038.js @@ -1 +1 @@ -import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; +import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-5a0ee5e7.js b/web/settings/assets/device-1da87f6d.js similarity index 87% rename from web/settings/assets/device-5a0ee5e7.js rename to web/settings/assets/device-1da87f6d.js index ae09c56c38..3a0efa899d 100644 --- a/web/settings/assets/device-5a0ee5e7.js +++ b/web/settings/assets/device-1da87f6d.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-78972dd5.js b/web/settings/assets/device-217340a2.js similarity index 88% rename from web/settings/assets/device-78972dd5.js rename to web/settings/assets/device-217340a2.js index fa7d27bece..d32877be23 100644 --- a/web/settings/assets/device-78972dd5.js +++ b/web/settings/assets/device-217340a2.js @@ -1 +1 @@ -import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; +import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-0d55c208.js b/web/settings/assets/device-2677ebed.js similarity index 89% rename from web/settings/assets/device-0d55c208.js rename to web/settings/assets/device-2677ebed.js index b6868dfed9..37edb97084 100644 --- a/web/settings/assets/device-0d55c208.js +++ b/web/settings/assets/device-2677ebed.js @@ -1 +1 @@ -import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; +import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-a5d80d29.js b/web/settings/assets/device-26d1cd71.js similarity index 89% rename from web/settings/assets/device-a5d80d29.js rename to web/settings/assets/device-26d1cd71.js index 9e0a19b095..38cfd92293 100644 --- a/web/settings/assets/device-a5d80d29.js +++ b/web/settings/assets/device-26d1cd71.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-1e5af3ea.js b/web/settings/assets/device-27f1f947.js similarity index 87% rename from web/settings/assets/device-1e5af3ea.js rename to web/settings/assets/device-27f1f947.js index 8d9580d83d..d2de4398d0 100644 --- a/web/settings/assets/device-1e5af3ea.js +++ b/web/settings/assets/device-27f1f947.js @@ -1 +1 @@ -import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; +import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-e7f127ec.js b/web/settings/assets/device-368823e3.js similarity index 95% rename from web/settings/assets/device-e7f127ec.js rename to web/settings/assets/device-368823e3.js index d438d7eb2f..89fe2d353e 100644 --- a/web/settings/assets/device-e7f127ec.js +++ b/web/settings/assets/device-368823e3.js @@ -1 +1 @@ -import{_,p as n,k as m,l as b,A as t,L as u,u as r,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-sungrow"},h={class:"small"};function x(o,e,s,q,B,i){const d=n("openwb-base-heading"),l=n("openwb-base-alert"),p=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",v,[t(d,null,{default:u(()=>[r(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(l,{subtype:"info"},{default:u(()=>[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>i.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":s.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=a=>i.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=_(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{V as default}; +import{_,p as n,k as m,l as b,A as t,L as u,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-sungrow"},h={class:"small"};function x(o,e,s,q,B,i){const d=n("openwb-base-heading"),l=n("openwb-base-alert"),p=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",v,[t(d,null,{default:u(()=>[r(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(l,{subtype:"info"},{default:u(()=>[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>i.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":s.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=a=>i.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=_(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-0afef9f8.js b/web/settings/assets/device-38cd05bd.js similarity index 89% rename from web/settings/assets/device-0afef9f8.js rename to web/settings/assets/device-38cd05bd.js index a02bfa950f..7b4cfeb778 100644 --- a/web/settings/assets/device-0afef9f8.js +++ b/web/settings/assets/device-38cd05bd.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; +import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-227fe008.js b/web/settings/assets/device-3d5e6b95.js similarity index 88% rename from web/settings/assets/device-227fe008.js rename to web/settings/assets/device-3d5e6b95.js index 3f490263a1..c70f9f0b48 100644 --- a/web/settings/assets/device-227fe008.js +++ b/web/settings/assets/device-3d5e6b95.js @@ -1 +1 @@ -import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; +import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-f915e9e1.js b/web/settings/assets/device-4674babe.js similarity index 85% rename from web/settings/assets/device-f915e9e1.js rename to web/settings/assets/device-4674babe.js index a6efd02532..7ee64aae16 100644 --- a/web/settings/assets/device-f915e9e1.js +++ b/web/settings/assets/device-4674babe.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-00997c9d.js b/web/settings/assets/device-56b26147.js similarity index 89% rename from web/settings/assets/device-00997c9d.js rename to web/settings/assets/device-56b26147.js index ce9615db09..25fa18191f 100644 --- a/web/settings/assets/device-00997c9d.js +++ b/web/settings/assets/device-56b26147.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,d){const r=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,d){const r=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-0e74116d.js b/web/settings/assets/device-5eae489e.js similarity index 90% rename from web/settings/assets/device-0e74116d.js rename to web/settings/assets/device-5eae489e.js index b229a36c5f..8e9be8943a 100644 --- a/web/settings/assets/device-0e74116d.js +++ b/web/settings/assets/device-5eae489e.js @@ -1 +1 @@ -import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-2078311b.js b/web/settings/assets/device-658cf7d5.js similarity index 87% rename from web/settings/assets/device-2078311b.js rename to web/settings/assets/device-658cf7d5.js index 4fe552fcbc..e1f889ec61 100644 --- a/web/settings/assets/device-2078311b.js +++ b/web/settings/assets/device-658cf7d5.js @@ -1 +1 @@ -import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; +import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-edfb92e7.js b/web/settings/assets/device-711c4142.js similarity index 89% rename from web/settings/assets/device-edfb92e7.js rename to web/settings/assets/device-711c4142.js index efb7a75130..ad2c19fc40 100644 --- a/web/settings/assets/device-edfb92e7.js +++ b/web/settings/assets/device-711c4142.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-4a9aeedd.js b/web/settings/assets/device-774e8229.js similarity index 87% rename from web/settings/assets/device-4a9aeedd.js rename to web/settings/assets/device-774e8229.js index 93fcb5338d..58a9be519e 100644 --- a/web/settings/assets/device-4a9aeedd.js +++ b/web/settings/assets/device-774e8229.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-c8f59f1c.js b/web/settings/assets/device-796f2679.js similarity index 88% rename from web/settings/assets/device-c8f59f1c.js rename to web/settings/assets/device-796f2679.js index 8676c292d5..c79ed7a5bc 100644 --- a/web/settings/assets/device-c8f59f1c.js +++ b/web/settings/assets/device-796f2679.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-c492c79f.js b/web/settings/assets/device-7db846be.js similarity index 89% rename from web/settings/assets/device-c492c79f.js rename to web/settings/assets/device-7db846be.js index fcc94e21ab..7d4f8b59d8 100644 --- a/web/settings/assets/device-c492c79f.js +++ b/web/settings/assets/device-7db846be.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-1f86752d.js b/web/settings/assets/device-7eb7f018.js similarity index 87% rename from web/settings/assets/device-1f86752d.js rename to web/settings/assets/device-7eb7f018.js index 12597460a9..77ed0ab65f 100644 --- a/web/settings/assets/device-1f86752d.js +++ b/web/settings/assets/device-7eb7f018.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-39d25848.js b/web/settings/assets/device-805a57b1.js similarity index 89% rename from web/settings/assets/device-39d25848.js rename to web/settings/assets/device-805a57b1.js index fa6921f4ce..1056e1cfab 100644 --- a/web/settings/assets/device-39d25848.js +++ b/web/settings/assets/device-805a57b1.js @@ -1 +1 @@ -import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; +import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-e04c8431.js b/web/settings/assets/device-81fa6cad.js similarity index 85% rename from web/settings/assets/device-e04c8431.js rename to web/settings/assets/device-81fa6cad.js index d83337b5db..a9aac097b4 100644 --- a/web/settings/assets/device-e04c8431.js +++ b/web/settings/assets/device-81fa6cad.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-18559536.js b/web/settings/assets/device-8c005647.js similarity index 85% rename from web/settings/assets/device-18559536.js rename to web/settings/assets/device-8c005647.js index 5ee7dfbaeb..df95ef67a0 100644 --- a/web/settings/assets/device-18559536.js +++ b/web/settings/assets/device-8c005647.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-5ae4acfc.js b/web/settings/assets/device-8d3984b8.js similarity index 89% rename from web/settings/assets/device-5ae4acfc.js rename to web/settings/assets/device-8d3984b8.js index 2e2190bf76..6f68314a6e 100644 --- a/web/settings/assets/device-5ae4acfc.js +++ b/web/settings/assets/device-8d3984b8.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-fc73a673.js b/web/settings/assets/device-8eeabc14.js similarity index 87% rename from web/settings/assets/device-fc73a673.js rename to web/settings/assets/device-8eeabc14.js index cf750f0ebe..f3e5130c3a 100644 --- a/web/settings/assets/device-fc73a673.js +++ b/web/settings/assets/device-8eeabc14.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-79231634.js b/web/settings/assets/device-9507155a.js similarity index 95% rename from web/settings/assets/device-79231634.js rename to web/settings/assets/device-9507155a.js index d7a785caa6..904fc8e9db 100644 --- a/web/settings/assets/device-79231634.js +++ b/web/settings/assets/device-9507155a.js @@ -1 +1 @@ -import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; +import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-4b441c71.js b/web/settings/assets/device-97a184d3.js similarity index 95% rename from web/settings/assets/device-4b441c71.js rename to web/settings/assets/device-97a184d3.js index 2ad8c7a930..a6973f02ae 100644 --- a/web/settings/assets/device-4b441c71.js +++ b/web/settings/assets/device-97a184d3.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-61765b74.js b/web/settings/assets/device-99280bbf.js similarity index 87% rename from web/settings/assets/device-61765b74.js rename to web/settings/assets/device-99280bbf.js index 2ebd543433..1f9f222a02 100644 --- a/web/settings/assets/device-61765b74.js +++ b/web/settings/assets/device-99280bbf.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-84ee9f0e.js b/web/settings/assets/device-a55b29f8.js similarity index 96% rename from web/settings/assets/device-84ee9f0e.js rename to web/settings/assets/device-a55b29f8.js index 054883eed2..0dcf7adaac 100644 --- a/web/settings/assets/device-84ee9f0e.js +++ b/web/settings/assets/device-a55b29f8.js @@ -1 +1 @@ -import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; +import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-6f67126a.js b/web/settings/assets/device-aa08fc7f.js similarity index 86% rename from web/settings/assets/device-6f67126a.js rename to web/settings/assets/device-aa08fc7f.js index 2bb009a18e..1e4fcd9319 100644 --- a/web/settings/assets/device-6f67126a.js +++ b/web/settings/assets/device-aa08fc7f.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-47e73557.js b/web/settings/assets/device-aba64669.js similarity index 89% rename from web/settings/assets/device-47e73557.js rename to web/settings/assets/device-aba64669.js index ea59f31398..068841cb8d 100644 --- a/web/settings/assets/device-47e73557.js +++ b/web/settings/assets/device-aba64669.js @@ -1 +1 @@ -import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; +import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-258d34d8.js b/web/settings/assets/device-ae95c2d3.js similarity index 87% rename from web/settings/assets/device-258d34d8.js rename to web/settings/assets/device-ae95c2d3.js index 3ed5478d2a..fbf3710050 100644 --- a/web/settings/assets/device-258d34d8.js +++ b/web/settings/assets/device-ae95c2d3.js @@ -1 +1 @@ -import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; +import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-dbb2dc55.js b/web/settings/assets/device-b4c7f099.js similarity index 88% rename from web/settings/assets/device-dbb2dc55.js rename to web/settings/assets/device-b4c7f099.js index 2e14fe9705..521b7bde7b 100644 --- a/web/settings/assets/device-dbb2dc55.js +++ b/web/settings/assets/device-b4c7f099.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-a211281f.js b/web/settings/assets/device-b78ab975.js similarity index 87% rename from web/settings/assets/device-a211281f.js rename to web/settings/assets/device-b78ab975.js index 8b7076bd20..695e2c4115 100644 --- a/web/settings/assets/device-a211281f.js +++ b/web/settings/assets/device-b78ab975.js @@ -1 +1 @@ -import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; +import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-a276a5e8.js b/web/settings/assets/device-b9e954eb.js similarity index 89% rename from web/settings/assets/device-a276a5e8.js rename to web/settings/assets/device-b9e954eb.js index 767a601056..5461381fb5 100644 --- a/web/settings/assets/device-a276a5e8.js +++ b/web/settings/assets/device-b9e954eb.js @@ -1 +1 @@ -import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; +import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-198215c0.js b/web/settings/assets/device-bfe71246.js similarity index 90% rename from web/settings/assets/device-198215c0.js rename to web/settings/assets/device-bfe71246.js index 4694eb7d92..734c0abb4c 100644 --- a/web/settings/assets/device-198215c0.js +++ b/web/settings/assets/device-bfe71246.js @@ -1 +1 @@ -import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; +import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-48b6056d.js b/web/settings/assets/device-c7f03dad.js similarity index 90% rename from web/settings/assets/device-48b6056d.js rename to web/settings/assets/device-c7f03dad.js index b0327c3df9..63657e2574 100644 --- a/web/settings/assets/device-48b6056d.js +++ b/web/settings/assets/device-c7f03dad.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; +import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-e1c1fe17.js b/web/settings/assets/device-c7f8802d.js similarity index 86% rename from web/settings/assets/device-e1c1fe17.js rename to web/settings/assets/device-c7f8802d.js index 581718d1fc..d5474e1bb8 100644 --- a/web/settings/assets/device-e1c1fe17.js +++ b/web/settings/assets/device-c7f8802d.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-c6d8e75d.js b/web/settings/assets/device-cbc50bc1.js similarity index 91% rename from web/settings/assets/device-c6d8e75d.js rename to web/settings/assets/device-cbc50bc1.js index 753adbf17a..59db30d11e 100644 --- a/web/settings/assets/device-c6d8e75d.js +++ b/web/settings/assets/device-cbc50bc1.js @@ -1 +1 @@ -import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; +import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-3875053c.js b/web/settings/assets/device-cbdcd521.js similarity index 92% rename from web/settings/assets/device-3875053c.js rename to web/settings/assets/device-cbdcd521.js index 89ab3408e2..83215f29ed 100644 --- a/web/settings/assets/device-3875053c.js +++ b/web/settings/assets/device-cbdcd521.js @@ -1 +1 @@ -import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; +import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-f0707a59.js b/web/settings/assets/device-d3af1afc.js similarity index 87% rename from web/settings/assets/device-f0707a59.js rename to web/settings/assets/device-d3af1afc.js index 80bc330e9c..18222edc2d 100644 --- a/web/settings/assets/device-f0707a59.js +++ b/web/settings/assets/device-d3af1afc.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; +import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/device-6b61f10b.js b/web/settings/assets/device-d70aa0bc.js similarity index 90% rename from web/settings/assets/device-6b61f10b.js rename to web/settings/assets/device-d70aa0bc.js index 04050fdc67..ccd8609f1f 100644 --- a/web/settings/assets/device-6b61f10b.js +++ b/web/settings/assets/device-d70aa0bc.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-6bc81270.js b/web/settings/assets/device-d77016c1.js similarity index 87% rename from web/settings/assets/device-6bc81270.js rename to web/settings/assets/device-d77016c1.js index 5f3f9e85be..d123d14d7d 100644 --- a/web/settings/assets/device-6bc81270.js +++ b/web/settings/assets/device-d77016c1.js @@ -1 +1 @@ -import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; +import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-7c1416ae.js b/web/settings/assets/device-e3c08fb4.js similarity index 85% rename from web/settings/assets/device-7c1416ae.js rename to web/settings/assets/device-e3c08fb4.js index 50d112eb61..4808812b01 100644 --- a/web/settings/assets/device-7c1416ae.js +++ b/web/settings/assets/device-e3c08fb4.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-d4c2290d.js b/web/settings/assets/device-e4295529.js similarity index 87% rename from web/settings/assets/device-d4c2290d.js rename to web/settings/assets/device-e4295529.js index 2342259ee1..e08da8fc42 100644 --- a/web/settings/assets/device-d4c2290d.js +++ b/web/settings/assets/device-e4295529.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-81cfe576.js b/web/settings/assets/device-e48058b2.js similarity index 91% rename from web/settings/assets/device-81cfe576.js rename to web/settings/assets/device-e48058b2.js index af3889c14d..0eb032d434 100644 --- a/web/settings/assets/device-81cfe576.js +++ b/web/settings/assets/device-e48058b2.js @@ -1 +1 @@ -import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; +import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; diff --git a/web/settings/assets/device-e0c91363.js b/web/settings/assets/device-e85a7920.js similarity index 90% rename from web/settings/assets/device-e0c91363.js rename to web/settings/assets/device-e85a7920.js index 900ef34521..e0334709b4 100644 --- a/web/settings/assets/device-e0c91363.js +++ b/web/settings/assets/device-e85a7920.js @@ -1 +1 @@ -import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; +import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-51726464.js b/web/settings/assets/device-ed00b326.js similarity index 89% rename from web/settings/assets/device-51726464.js rename to web/settings/assets/device-ed00b326.js index e20b3707aa..030a62e773 100644 --- a/web/settings/assets/device-51726464.js +++ b/web/settings/assets/device-ed00b326.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-8ad58e8f.js b/web/settings/assets/device-ee213d99.js similarity index 89% rename from web/settings/assets/device-8ad58e8f.js rename to web/settings/assets/device-ee213d99.js index 763af6386c..c428265fc3 100644 --- a/web/settings/assets/device-8ad58e8f.js +++ b/web/settings/assets/device-ee213d99.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-2120f8c0.js b/web/settings/assets/device-f0ead4af.js similarity index 87% rename from web/settings/assets/device-2120f8c0.js rename to web/settings/assets/device-f0ead4af.js index dd842d7129..6dca389e39 100644 --- a/web/settings/assets/device-2120f8c0.js +++ b/web/settings/assets/device-f0ead4af.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-43fe3974.js b/web/settings/assets/device-f7ed291a.js similarity index 87% rename from web/settings/assets/device-43fe3974.js rename to web/settings/assets/device-f7ed291a.js index 61a8e76550..c95c6a143d 100644 --- a/web/settings/assets/device-43fe3974.js +++ b/web/settings/assets/device-f7ed291a.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-c35af9f0.js b/web/settings/assets/device-fd68e523.js similarity index 87% rename from web/settings/assets/device-c35af9f0.js rename to web/settings/assets/device-fd68e523.js index b994e4c46e..e13c12424a 100644 --- a/web/settings/assets/device-c35af9f0.js +++ b/web/settings/assets/device-fd68e523.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; +import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-e7707776.js b/web/settings/assets/device-ff40d8e1.js similarity index 89% rename from web/settings/assets/device-e7707776.js rename to web/settings/assets/device-ff40d8e1.js index 3a749e7e39..c5f4cc362d 100644 --- a/web/settings/assets/device-e7707776.js +++ b/web/settings/assets/device-ff40d8e1.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/displayTheme-8212a288.js b/web/settings/assets/displayTheme-65aaa96a.js similarity index 97% rename from web/settings/assets/displayTheme-8212a288.js rename to web/settings/assets/displayTheme-65aaa96a.js index 13ef76ab58..f2ec60b6d9 100644 --- a/web/settings/assets/displayTheme-8212a288.js +++ b/web/settings/assets/displayTheme-65aaa96a.js @@ -1,4 +1,4 @@ -import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" +import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" [r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-266d661e.js b/web/settings/assets/external_inverter-79f2751a.js similarity index 92% rename from web/settings/assets/external_inverter-266d661e.js rename to web/settings/assets/external_inverter-79f2751a.js index f7bde3627e..46e509d37f 100644 --- a/web/settings/assets/external_inverter-266d661e.js +++ b/web/settings/assets/external_inverter-79f2751a.js @@ -1 +1 @@ -import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; +import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/external_inverter-114e7859.js b/web/settings/assets/external_inverter-fc2cb871.js similarity index 86% rename from web/settings/assets/external_inverter-114e7859.js rename to web/settings/assets/external_inverter-fc2cb871.js index 41303813bf..ab7b57490a 100644 --- a/web/settings/assets/external_inverter-114e7859.js +++ b/web/settings/assets/external_inverter-fc2cb871.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/index-f73a9131.js b/web/settings/assets/index-b772b3e8.js similarity index 87% rename from web/settings/assets/index-f73a9131.js rename to web/settings/assets/index-b772b3e8.js index c732cd01c7..ed1e678ff0 100644 --- a/web/settings/assets/index-f73a9131.js +++ b/web/settings/assets/index-b772b3e8.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-6e5b23b4.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import{p as Ee,a as Ae}from"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-jquery-921f231b.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-eed60d97.js"),["assets/Status-eed60d97.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-7096367e.js"),["assets/ChargeLog-7096367e.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b2368220.js"),["assets/Chart-b2368220.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-5f622c20.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-e079d68c.js"),["assets/GeneralConfig-e079d68c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-38363e80.js"),["assets/OptionalComponents-38363e80.js","assets/dynamic-import-helper-be004503.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-10b74be1.js"),["assets/GeneralChargeConfig-10b74be1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-0c4a2b3b.js"),["assets/InstantChargeConfig-0c4a2b3b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-d52a8b34.js"),["assets/PVChargeConfig-d52a8b34.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-e6a22d8f.js"),["assets/TimeChargeConfig-e6a22d8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-3958a406.js"),["assets/ScheduledChargeConfig-3958a406.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-226d64a1.js"),["assets/HardwareInstallation-226d64a1.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-23370c56.js"),["assets/LoadManagementConfig-23370c56.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-db92c83c.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-480980cc.js"),["assets/ChargePointInstallation-480980cc.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-77586afa.js"),["assets/VehicleConfig-77586afa.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-64f3ecdf.js"),["assets/CloudConfig-64f3ecdf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-a0ff7a48.js"),["assets/MqttBridgeConfig-a0ff7a48.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-7d67d5b1.js"),["assets/DebugConfig-7d67d5b1.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-61d51453.js"),["assets/Support-61d51453.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-917626a5.js"),["assets/LegalSettings-917626a5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-a0d6988e.js"),["assets/System-a0d6988e.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-b69f05c7.js"),["assets/DataManagement-b69f05c7.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-8c0031f9.js"),["assets/TestingStore-8c0031f9.js","assets/OpenwbSortableList-db92c83c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-2f9e22dd.js"),["assets/Status-2f9e22dd.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-70fa4b12.js"),["assets/ChargeLog-70fa4b12.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-bf76fb9e.js"),["assets/Chart-bf76fb9e.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-4871098e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-abdd6c9a.js"),["assets/GeneralConfig-abdd6c9a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-6ef77f4c.js"),["assets/OptionalComponents-6ef77f4c.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ff9f0666.js"),["assets/GeneralChargeConfig-ff9f0666.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3c9fe452.js"),["assets/InstantChargeConfig-3c9fe452.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-04e8c577.js"),["assets/PVChargeConfig-04e8c577.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-8875b0c6.js"),["assets/TimeChargeConfig-8875b0c6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-f93a9bf5.js"),["assets/ScheduledChargeConfig-f93a9bf5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-4752ed0c.js"),["assets/HardwareInstallation-4752ed0c.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-2faefad8.js"),["assets/LoadManagementConfig-2faefad8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-91778edb.js"),["assets/ChargePointInstallation-91778edb.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-7ad05e57.js"),["assets/VehicleConfig-7ad05e57.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-e240cf70.js"),["assets/CloudConfig-e240cf70.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-dc2c20af.js"),["assets/MqttBridgeConfig-dc2c20af.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-7f3e104b.js"),["assets/DebugConfig-7f3e104b.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-007f9ec4.js"),["assets/Support-007f9ec4.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f8408734.js"),["assets/LegalSettings-f8408734.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-fff94d77.js"),["assets/System-fff94d77.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-03e74cdc.js"),["assets/DataManagement-03e74cdc.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-73fc83a0.js"),["assets/TestingStore-73fc83a0.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-5cf7f4ea.js b/web/settings/assets/inverter-00a09c36.js similarity index 86% rename from web/settings/assets/inverter-5cf7f4ea.js rename to web/settings/assets/inverter-00a09c36.js index 43fb6bf88e..e05937a5d2 100644 --- a/web/settings/assets/inverter-5cf7f4ea.js +++ b/web/settings/assets/inverter-00a09c36.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-c53f4fbf.js b/web/settings/assets/inverter-0769e573.js similarity index 93% rename from web/settings/assets/inverter-c53f4fbf.js rename to web/settings/assets/inverter-0769e573.js index eea18479e8..c566d5a3f3 100644 --- a/web/settings/assets/inverter-c53f4fbf.js +++ b/web/settings/assets/inverter-0769e573.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-1e116570.js b/web/settings/assets/inverter-0f04bc4e.js similarity index 88% rename from web/settings/assets/inverter-1e116570.js rename to web/settings/assets/inverter-0f04bc4e.js index ce01026b4d..bc4dfb6650 100644 --- a/web/settings/assets/inverter-1e116570.js +++ b/web/settings/assets/inverter-0f04bc4e.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{M as default}; +import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-5231c6c2.js b/web/settings/assets/inverter-106f6b2a.js similarity index 88% rename from web/settings/assets/inverter-5231c6c2.js rename to web/settings/assets/inverter-106f6b2a.js index 7d5d6d6717..1617183fe2 100644 --- a/web/settings/assets/inverter-5231c6c2.js +++ b/web/settings/assets/inverter-106f6b2a.js @@ -1 +1 @@ -import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7b30173d.js b/web/settings/assets/inverter-151fa9c5.js similarity index 86% rename from web/settings/assets/inverter-7b30173d.js rename to web/settings/assets/inverter-151fa9c5.js index 4161f15516..84dce4f5a7 100644 --- a/web/settings/assets/inverter-7b30173d.js +++ b/web/settings/assets/inverter-151fa9c5.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-25c50f0a.js b/web/settings/assets/inverter-1bbefb9c.js similarity index 91% rename from web/settings/assets/inverter-25c50f0a.js rename to web/settings/assets/inverter-1bbefb9c.js index ea2c005d37..4731285318 100644 --- a/web/settings/assets/inverter-25c50f0a.js +++ b/web/settings/assets/inverter-1bbefb9c.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-ebb193da.js b/web/settings/assets/inverter-1bcb55bc.js similarity index 86% rename from web/settings/assets/inverter-ebb193da.js rename to web/settings/assets/inverter-1bcb55bc.js index ec769a4d45..7e14b7af69 100644 --- a/web/settings/assets/inverter-ebb193da.js +++ b/web/settings/assets/inverter-1bcb55bc.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a66f1636.js b/web/settings/assets/inverter-239362ff.js similarity index 89% rename from web/settings/assets/inverter-a66f1636.js rename to web/settings/assets/inverter-239362ff.js index 8d9acea4bf..c0f3b25a9b 100644 --- a/web/settings/assets/inverter-a66f1636.js +++ b/web/settings/assets/inverter-239362ff.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; +import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e45e304e.js b/web/settings/assets/inverter-23c62af1.js similarity index 86% rename from web/settings/assets/inverter-e45e304e.js rename to web/settings/assets/inverter-23c62af1.js index faae925257..23da21c34d 100644 --- a/web/settings/assets/inverter-e45e304e.js +++ b/web/settings/assets/inverter-23c62af1.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-502f629e.js b/web/settings/assets/inverter-26fc0c4d.js similarity index 94% rename from web/settings/assets/inverter-502f629e.js rename to web/settings/assets/inverter-26fc0c4d.js index dd31542d34..9e11086067 100644 --- a/web/settings/assets/inverter-502f629e.js +++ b/web/settings/assets/inverter-26fc0c4d.js @@ -1 +1 @@ -import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; +import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; diff --git a/web/settings/assets/inverter-3e75383d.js b/web/settings/assets/inverter-33d71d7c.js similarity index 87% rename from web/settings/assets/inverter-3e75383d.js rename to web/settings/assets/inverter-33d71d7c.js index 7ceeb657d9..7ecd763815 100644 --- a/web/settings/assets/inverter-3e75383d.js +++ b/web/settings/assets/inverter-33d71d7c.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-b4097339.js b/web/settings/assets/inverter-3639b6ee.js similarity index 88% rename from web/settings/assets/inverter-b4097339.js rename to web/settings/assets/inverter-3639b6ee.js index 6a3ce6838b..05ee6f6f82 100644 --- a/web/settings/assets/inverter-b4097339.js +++ b/web/settings/assets/inverter-3639b6ee.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-2cf514ef.js b/web/settings/assets/inverter-36547adc.js similarity index 95% rename from web/settings/assets/inverter-2cf514ef.js rename to web/settings/assets/inverter-36547adc.js index 9b62b51dc4..060f8137ae 100644 --- a/web/settings/assets/inverter-2cf514ef.js +++ b/web/settings/assets/inverter-36547adc.js @@ -1 +1 @@ -import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; +import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-0748897a.js b/web/settings/assets/inverter-3849924d.js similarity index 94% rename from web/settings/assets/inverter-0748897a.js rename to web/settings/assets/inverter-3849924d.js index 4bd869058c..791a9d7229 100644 --- a/web/settings/assets/inverter-0748897a.js +++ b/web/settings/assets/inverter-3849924d.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; +import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-a2fbbf7f.js b/web/settings/assets/inverter-47ad48de.js similarity index 90% rename from web/settings/assets/inverter-a2fbbf7f.js rename to web/settings/assets/inverter-47ad48de.js index ee0ee5c23a..01561d6818 100644 --- a/web/settings/assets/inverter-a2fbbf7f.js +++ b/web/settings/assets/inverter-47ad48de.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-4cef121f.js b/web/settings/assets/inverter-5c832d19.js similarity index 86% rename from web/settings/assets/inverter-4cef121f.js rename to web/settings/assets/inverter-5c832d19.js index a852171a87..9f060f7911 100644 --- a/web/settings/assets/inverter-4cef121f.js +++ b/web/settings/assets/inverter-5c832d19.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-c87e2737.js b/web/settings/assets/inverter-67becac8.js similarity index 86% rename from web/settings/assets/inverter-c87e2737.js rename to web/settings/assets/inverter-67becac8.js index 28c1aba0af..f31a14d1b4 100644 --- a/web/settings/assets/inverter-c87e2737.js +++ b/web/settings/assets/inverter-67becac8.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; +import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-90f3d72b.js b/web/settings/assets/inverter-695b5c53.js similarity index 86% rename from web/settings/assets/inverter-90f3d72b.js rename to web/settings/assets/inverter-695b5c53.js index e16fa1ada9..b27b779c18 100644 --- a/web/settings/assets/inverter-90f3d72b.js +++ b/web/settings/assets/inverter-695b5c53.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-1e83ea2a.js b/web/settings/assets/inverter-6bf21593.js similarity index 90% rename from web/settings/assets/inverter-1e83ea2a.js rename to web/settings/assets/inverter-6bf21593.js index f3b124cf63..8c42d41b58 100644 --- a/web/settings/assets/inverter-1e83ea2a.js +++ b/web/settings/assets/inverter-6bf21593.js @@ -1 +1 @@ -import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; +import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7ff062ac.js b/web/settings/assets/inverter-6f9c66d1.js similarity index 90% rename from web/settings/assets/inverter-7ff062ac.js rename to web/settings/assets/inverter-6f9c66d1.js index ea1c91ce2f..46524a5800 100644 --- a/web/settings/assets/inverter-7ff062ac.js +++ b/web/settings/assets/inverter-6f9c66d1.js @@ -1 +1 @@ -import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-766499df.js b/web/settings/assets/inverter-78f559db.js similarity index 86% rename from web/settings/assets/inverter-766499df.js rename to web/settings/assets/inverter-78f559db.js index f19330a085..f386c68fa0 100644 --- a/web/settings/assets/inverter-766499df.js +++ b/web/settings/assets/inverter-78f559db.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e4d3cc40.js b/web/settings/assets/inverter-7c9d893d.js similarity index 86% rename from web/settings/assets/inverter-e4d3cc40.js rename to web/settings/assets/inverter-7c9d893d.js index e5364c7fee..0711668c70 100644 --- a/web/settings/assets/inverter-e4d3cc40.js +++ b/web/settings/assets/inverter-7c9d893d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-c21d2035.js b/web/settings/assets/inverter-832936bd.js similarity index 86% rename from web/settings/assets/inverter-c21d2035.js rename to web/settings/assets/inverter-832936bd.js index 270f5a15d8..5926302de8 100644 --- a/web/settings/assets/inverter-c21d2035.js +++ b/web/settings/assets/inverter-832936bd.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; +import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-238294f2.js b/web/settings/assets/inverter-89f2126b.js similarity index 86% rename from web/settings/assets/inverter-238294f2.js rename to web/settings/assets/inverter-89f2126b.js index 9038658e01..f31e7ddf8a 100644 --- a/web/settings/assets/inverter-238294f2.js +++ b/web/settings/assets/inverter-89f2126b.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-b11fd5b4.js b/web/settings/assets/inverter-9b9fe63d.js similarity index 96% rename from web/settings/assets/inverter-b11fd5b4.js rename to web/settings/assets/inverter-9b9fe63d.js index cc9c3c0974..aebb5ff9a0 100644 --- a/web/settings/assets/inverter-b11fd5b4.js +++ b/web/settings/assets/inverter-9b9fe63d.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-5952b75a.js b/web/settings/assets/inverter-a15db0a0.js similarity index 86% rename from web/settings/assets/inverter-5952b75a.js rename to web/settings/assets/inverter-a15db0a0.js index 3667ee71e5..14483399cb 100644 --- a/web/settings/assets/inverter-5952b75a.js +++ b/web/settings/assets/inverter-a15db0a0.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-5378e193.js b/web/settings/assets/inverter-a3407794.js similarity index 93% rename from web/settings/assets/inverter-5378e193.js rename to web/settings/assets/inverter-a3407794.js index 7c2d4c7c6d..3f550fa359 100644 --- a/web/settings/assets/inverter-5378e193.js +++ b/web/settings/assets/inverter-a3407794.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-b1fa892a.js b/web/settings/assets/inverter-a6ddec85.js similarity index 93% rename from web/settings/assets/inverter-b1fa892a.js rename to web/settings/assets/inverter-a6ddec85.js index ef63e13708..f158c171cb 100644 --- a/web/settings/assets/inverter-b1fa892a.js +++ b/web/settings/assets/inverter-a6ddec85.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-142e36fb.js b/web/settings/assets/inverter-a8d17a4e.js similarity index 88% rename from web/settings/assets/inverter-142e36fb.js rename to web/settings/assets/inverter-a8d17a4e.js index e09afe7c68..065cbd634e 100644 --- a/web/settings/assets/inverter-142e36fb.js +++ b/web/settings/assets/inverter-a8d17a4e.js @@ -1 +1 @@ -import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const M=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{M as default}; +import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const M=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-902f3710.js b/web/settings/assets/inverter-ab71cc4b.js similarity index 90% rename from web/settings/assets/inverter-902f3710.js rename to web/settings/assets/inverter-ab71cc4b.js index f2d2c4bf5b..b5a971efde 100644 --- a/web/settings/assets/inverter-902f3710.js +++ b/web/settings/assets/inverter-ab71cc4b.js @@ -1 +1 @@ -import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,h,M,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{D as default}; +import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,h,M,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{D as default}; diff --git a/web/settings/assets/inverter-127bad9a.js b/web/settings/assets/inverter-ac056d1d.js similarity index 86% rename from web/settings/assets/inverter-127bad9a.js rename to web/settings/assets/inverter-ac056d1d.js index 33d1decdad..c5c31e2201 100644 --- a/web/settings/assets/inverter-127bad9a.js +++ b/web/settings/assets/inverter-ac056d1d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-9f25c7b8.js b/web/settings/assets/inverter-b84b910e.js similarity index 86% rename from web/settings/assets/inverter-9f25c7b8.js rename to web/settings/assets/inverter-b84b910e.js index cfd8873a22..c525e55747 100644 --- a/web/settings/assets/inverter-9f25c7b8.js +++ b/web/settings/assets/inverter-b84b910e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-eff782b7.js b/web/settings/assets/inverter-b8fdf4a4.js similarity index 86% rename from web/settings/assets/inverter-eff782b7.js rename to web/settings/assets/inverter-b8fdf4a4.js index 1efc7a67cb..4587cdda05 100644 --- a/web/settings/assets/inverter-eff782b7.js +++ b/web/settings/assets/inverter-b8fdf4a4.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-40527e01.js b/web/settings/assets/inverter-bc58fc73.js similarity index 91% rename from web/settings/assets/inverter-40527e01.js rename to web/settings/assets/inverter-bc58fc73.js index 0d25ca6a93..7071a6d434 100644 --- a/web/settings/assets/inverter-40527e01.js +++ b/web/settings/assets/inverter-bc58fc73.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; diff --git a/web/settings/assets/inverter-c1bf7cde.js b/web/settings/assets/inverter-c3c11140.js similarity index 93% rename from web/settings/assets/inverter-c1bf7cde.js rename to web/settings/assets/inverter-c3c11140.js index d90651cbbd..398238d4d9 100644 --- a/web/settings/assets/inverter-c1bf7cde.js +++ b/web/settings/assets/inverter-c3c11140.js @@ -1 +1 @@ -import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; +import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; diff --git a/web/settings/assets/inverter-1d15d663.js b/web/settings/assets/inverter-d4107377.js similarity index 86% rename from web/settings/assets/inverter-1d15d663.js rename to web/settings/assets/inverter-d4107377.js index bdf7cfa439..b90ea78ff9 100644 --- a/web/settings/assets/inverter-1d15d663.js +++ b/web/settings/assets/inverter-d4107377.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-9fe0373f.js b/web/settings/assets/inverter-d426b124.js similarity index 86% rename from web/settings/assets/inverter-9fe0373f.js rename to web/settings/assets/inverter-d426b124.js index 9d8caebeec..a29ebc9021 100644 --- a/web/settings/assets/inverter-9fe0373f.js +++ b/web/settings/assets/inverter-d426b124.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-141492ab.js b/web/settings/assets/inverter-dfa572d8.js similarity index 86% rename from web/settings/assets/inverter-141492ab.js rename to web/settings/assets/inverter-dfa572d8.js index 1890403275..3db6b50d8a 100644 --- a/web/settings/assets/inverter-141492ab.js +++ b/web/settings/assets/inverter-dfa572d8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-cbe3f201.js b/web/settings/assets/inverter-e06fd605.js similarity index 93% rename from web/settings/assets/inverter-cbe3f201.js rename to web/settings/assets/inverter-e06fd605.js index af525f77dc..b438a6492e 100644 --- a/web/settings/assets/inverter-cbe3f201.js +++ b/web/settings/assets/inverter-e06fd605.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-1e818ed4.js b/web/settings/assets/inverter-e440b330.js similarity index 86% rename from web/settings/assets/inverter-1e818ed4.js rename to web/settings/assets/inverter-e440b330.js index 2e70c46d85..95ae64efc8 100644 --- a/web/settings/assets/inverter-1e818ed4.js +++ b/web/settings/assets/inverter-e440b330.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-2cb1f91b.js b/web/settings/assets/inverter-eee1527f.js similarity index 93% rename from web/settings/assets/inverter-2cb1f91b.js rename to web/settings/assets/inverter-eee1527f.js index 536a7b5ddc..723c93d562 100644 --- a/web/settings/assets/inverter-2cb1f91b.js +++ b/web/settings/assets/inverter-eee1527f.js @@ -1 +1 @@ -import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; +import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-012c416a.js b/web/settings/assets/inverter-ef72abc7.js similarity index 89% rename from web/settings/assets/inverter-012c416a.js rename to web/settings/assets/inverter-ef72abc7.js index 09304b6836..77236ceee3 100644 --- a/web/settings/assets/inverter-012c416a.js +++ b/web/settings/assets/inverter-ef72abc7.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-4355b01b.js b/web/settings/assets/inverter-fabd24ac.js similarity index 86% rename from web/settings/assets/inverter-4355b01b.js rename to web/settings/assets/inverter-fabd24ac.js index 20120750bc..fdb5cb6c83 100644 --- a/web/settings/assets/inverter-4355b01b.js +++ b/web/settings/assets/inverter-fabd24ac.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; +import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/vehicle-e146fe0e.js b/web/settings/assets/vehicle-0b6d061a.js similarity index 90% rename from web/settings/assets/vehicle-e146fe0e.js rename to web/settings/assets/vehicle-0b6d061a.js index d484e08c0c..6ff1830e18 100644 --- a/web/settings/assets/vehicle-e146fe0e.js +++ b/web/settings/assets/vehicle-0b6d061a.js @@ -1 +1 @@ -import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; +import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-50dd5eb2.js b/web/settings/assets/vehicle-391df8d0.js similarity index 93% rename from web/settings/assets/vehicle-50dd5eb2.js rename to web/settings/assets/vehicle-391df8d0.js index c186904a04..f98d236dd5 100644 --- a/web/settings/assets/vehicle-50dd5eb2.js +++ b/web/settings/assets/vehicle-391df8d0.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-7cd93604.js b/web/settings/assets/vehicle-4249fcff.js similarity index 95% rename from web/settings/assets/vehicle-7cd93604.js rename to web/settings/assets/vehicle-4249fcff.js index fd95f8339f..803c7cb43e 100644 --- a/web/settings/assets/vehicle-7cd93604.js +++ b/web/settings/assets/vehicle-4249fcff.js @@ -1 +1 @@ -import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; +import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-4b98a311.js b/web/settings/assets/vehicle-56b3de10.js similarity index 91% rename from web/settings/assets/vehicle-4b98a311.js rename to web/settings/assets/vehicle-56b3de10.js index f17a6b3c08..9ddb4d1029 100644 --- a/web/settings/assets/vehicle-4b98a311.js +++ b/web/settings/assets/vehicle-56b3de10.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; +import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-6c139591.js b/web/settings/assets/vehicle-67509117.js similarity index 95% rename from web/settings/assets/vehicle-6c139591.js rename to web/settings/assets/vehicle-67509117.js index 03ee49a7d2..97b35b86e0 100644 --- a/web/settings/assets/vehicle-6c139591.js +++ b/web/settings/assets/vehicle-67509117.js @@ -1 +1 @@ -import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; +import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; diff --git a/web/settings/assets/vehicle-575fb854.js b/web/settings/assets/vehicle-75667aad.js similarity index 91% rename from web/settings/assets/vehicle-575fb854.js rename to web/settings/assets/vehicle-75667aad.js index 4a7f939b3c..ebf206244a 100644 --- a/web/settings/assets/vehicle-575fb854.js +++ b/web/settings/assets/vehicle-75667aad.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-e377a977.js b/web/settings/assets/vehicle-7df8b393.js similarity index 94% rename from web/settings/assets/vehicle-e377a977.js rename to web/settings/assets/vehicle-7df8b393.js index 17e454bf0b..845b81bbfa 100644 --- a/web/settings/assets/vehicle-e377a977.js +++ b/web/settings/assets/vehicle-7df8b393.js @@ -1 +1 @@ -import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; +import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-c96cd902.js b/web/settings/assets/vehicle-8923672d.js similarity index 94% rename from web/settings/assets/vehicle-c96cd902.js rename to web/settings/assets/vehicle-8923672d.js index 03fba6f1a9..210ed20caa 100644 --- a/web/settings/assets/vehicle-c96cd902.js +++ b/web/settings/assets/vehicle-8923672d.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-6e5b23b4.js";import{a as y}from"./vendor-axios-86f7a224.js";import{C}from"./index-f73a9131.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-b772b3e8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-e76a744b.js b/web/settings/assets/vehicle-a27fc177.js similarity index 91% rename from web/settings/assets/vehicle-e76a744b.js rename to web/settings/assets/vehicle-a27fc177.js index 9d126ba4c7..38516552ed 100644 --- a/web/settings/assets/vehicle-e76a744b.js +++ b/web/settings/assets/vehicle-a27fc177.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-eb74ae86.js b/web/settings/assets/vehicle-b9c60ee5.js similarity index 91% rename from web/settings/assets/vehicle-eb74ae86.js rename to web/settings/assets/vehicle-b9c60ee5.js index 14029bd245..571f5dfcf4 100644 --- a/web/settings/assets/vehicle-eb74ae86.js +++ b/web/settings/assets/vehicle-b9c60ee5.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-c5a65e75.js b/web/settings/assets/vehicle-d1763e7a.js similarity index 93% rename from web/settings/assets/vehicle-c5a65e75.js rename to web/settings/assets/vehicle-d1763e7a.js index 5a99229761..78b28885c3 100644 --- a/web/settings/assets/vehicle-c5a65e75.js +++ b/web/settings/assets/vehicle-d1763e7a.js @@ -1 +1 @@ -import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-20cc743a.js b/web/settings/assets/vehicle-d98ffef7.js similarity index 92% rename from web/settings/assets/vehicle-20cc743a.js rename to web/settings/assets/vehicle-d98ffef7.js index d9435a7876..1c45284b40 100644 --- a/web/settings/assets/vehicle-20cc743a.js +++ b/web/settings/assets/vehicle-d98ffef7.js @@ -1 +1 @@ -import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; +import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-85f19442.js b/web/settings/assets/vehicle-df2230d5.js similarity index 92% rename from web/settings/assets/vehicle-85f19442.js rename to web/settings/assets/vehicle-df2230d5.js index 520a821568..6f35bd66e7 100644 --- a/web/settings/assets/vehicle-85f19442.js +++ b/web/settings/assets/vehicle-df2230d5.js @@ -1 +1 @@ -import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; +import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; diff --git a/web/settings/assets/vendor-59c39d33.js b/web/settings/assets/vendor-59c39d33.js new file mode 100644 index 0000000000..d563139a61 --- /dev/null +++ b/web/settings/assets/vendor-59c39d33.js @@ -0,0 +1,100 @@ +import{r as I4}from"./vendor-sortablejs-1a35b5ad.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},sh={};sh.byteLength=B4;sh.toByteArray=N4;sh.fromByteArray=D4;var Xi=[],ui=[],P4=typeof Uint8Array<"u"?Uint8Array:Array,Ic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,C4=Ic.length;Ca0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function B4(e){var t=Uw(e),r=t[0],i=t[1];return(r+i)*3/4-i}function L4(e,t,r){return(t+r)*3/4-r}function N4(e){var t,r=Uw(e),i=r[0],a=r[1],n=new P4(L4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function k4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function $4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */(function(e){var t=sh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Hw={exports:{}},rr=Hw.exports={},Gi,Yi;function P0(){throw new Error("setTimeout has not been defined")}function C0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=P0}catch{Gi=P0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=C0}catch{Yi=C0}})();function qw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===P0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function F4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===C0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,zo,il=-1;function j4(){!za||!zo||(za=!1,zo.length?In=zo.concat(In):il=-1,In.length&&Ww())}function Ww(){if(!za){var e=qw(j4);za=!0;for(var t=In.length;t;){for(zo=In,In=[];++il1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},Vw=()=>!1,q4=/^on[^a-z]/,Ps=e=>q4.test(e),xl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W4=Object.prototype.hasOwnProperty,wt=(e,t)=>W4.call(e,t),ze=Array.isArray,Jo=e=>Cs(e)==="[object Map]",va=e=>Cs(e)==="[object Set]",fm=e=>Cs(e)==="[object Date]",K4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",fh=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),zw=Object.prototype.toString,Cs=e=>zw.call(e),nv=e=>Cs(e).slice(8,-1),Gw=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),V4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),uh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},z4=/-(\w)/g,Kr=uh(e=>e.replace(z4,(t,r)=>r?r.toUpperCase():"")),G4=/\B([A-Z])/g,Hr=uh(e=>e.replace(G4,"-$1").toLowerCase()),_o=uh(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=uh(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Rl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Al=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let um;const Tl=()=>um||(um=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),Y4="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",Z4=Kn(Y4);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(J4);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===zw||!Qe(e.toString))?JSON.stringify(e,Zw,2):String(e),Zw=(e,t)=>t&&t.__v_isRef?Zw(e,t.value):Jo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:va(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Gw(t)?String(t):t;function Ol(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Ol("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},e2=e=>(e.w&So)>0,t2=e=>(e.n&So)>0,lE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"delete":ze(e)||(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"set":Jo(e)&&c.push(u.get(Qo));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&N0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);N0(sv(m),d)}}function N0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&hm(i,t);for(const i of r)i.computed||hm(i,t)}function hm(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function pE(e,t){var r;return(r=Il.get(e))==null?void 0:r.get(t)}const vE=Kn("__proto__,__v_isRef,__isVue"),n2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),gE=hh(),mE=hh(!1,!0),yE=hh(!0),bE=hh(!0,!0),cm=wE();function wE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ga();const i=lt(this)[t].apply(this,r);return ma(),i}}),e}function _E(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function hh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?c2:h2:t?l2:u2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(cm,a))return Reflect.get(cm,a,n);if(a==="hasOwnProperty")return _E}const c=Reflect.get(i,a,n);return(Uf(a)?n2.has(a):vE(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?lv(c):ya(c):c}}const ME=o2(),SE=o2(!0);function o2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,ch=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=ch(a),c=i?fv:r?cv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",Qo),Reflect.get(e,"size",e)}function dm(e){e=lt(e);const t=lt(this);return ch(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function pm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=ch(r);let n=i.call(r,e);n?f2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function vm(e){const t=lt(this),{has:r,get:i}=ch(t);let a=r.call(t,e);a?f2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function gm(){const e=lt(this),t=e.size!==0,r=Jo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?cv:Wf;return!e&&Tr(c,"iterate",Qo),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Jo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?cv:Wf;return!t&&Tr(n,"iterate",d?L0:Qo),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function OE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[IE,PE,CE,BE]=OE();function dh(e,t){const r=t?e?BE:CE:e?PE:IE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const LE={get:dh(!1,!1)},NE={get:dh(!1,!0)},kE={get:dh(!0,!1)},$E={get:dh(!0,!0)};function f2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 u2=new WeakMap,l2=new WeakMap,h2=new WeakMap,c2=new WeakMap;function DE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function FE(e){return e.__v_skip||!Object.isExtensible(e)?0:DE(nv(e))}function ya(e){return Ln(e)?e:ph(e,!1,a2,LE,u2)}function uv(e){return ph(e,!1,AE,NE,l2)}function lv(e){return ph(e,!0,s2,kE,h2)}function Wa(e){return ph(e,!0,TE,$E,c2)}function ph(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=FE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function hv(e){return El(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?ya(e):e,cv=e=>Rt(e)?lv(e):e;function dv(e){co&&Br&&(e=lt(e),i2(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function vh(e,t){e=lt(e);const r=e.dep;r&&N0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return p2(e,!1)}function d2(e){return p2(e,!0)}function p2(e,t){return Xt(e)?e:new jE(e,t)}class jE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return dv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),vh(this,t))}}function UE(e){vh(e,e.value)}function vo(e){return Xt(e)?e.value:e}function HE(e){return Qe(e)?e():vo(e)}const qE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function pv(e){return po(e)?e:new Proxy(e,qE)}class WE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>dv(this),()=>vh(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function KE(e){return new WE(e)}function VE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=v2(e,r);return t}class zE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pE(lt(this._object),this._key)}}class GE{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function YE(e,t,r){return Xt(e)?e:Qe(e)?new GE(e):Rt(e)&&arguments.length>1?v2(e,t,r):mr(e)}function v2(e,t,r){const i=e[t];return Xt(i)?i:new zE(e,t,r)}class ZE{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,vh(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return dv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function XE(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new ZE(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ea=[];function Tf(e){ea.push(e)}function Of(){ea.pop()}function Ue(e,...t){ga();const r=ea.length?ea[ea.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=JE();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Rh(r,n.type)}>`).join(` +`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(` +`,...QE(a)),console.warn(...n)}ma()}function JE(){let e=ea[ea.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function QE(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[` +`],...e8(r))}),t}function e8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Rh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...t8(e.props),n]:[a+n]}function t8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...g2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function g2(e,t,r){return Vt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:Xt(t)?(t=g2(e,lt(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=lt(t),r?t:[`${e}=`,t])}function vv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const gv={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. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function en(e,t,r,i){let a;try{a=i?e(...i):e()}catch(n){ba(n,t,r)}return a}function Zr(e,t,r,i){if(Qe(e)){const n=en(e,t,r,i);return n&&fh(n)&&n.catch(u=>{ba(u,t,r)}),n}const a=[];for(let n=0;n>>1;Vf(Er[i])Ji&&Er.splice(t,1)}function gh(e){ze(e)?Ya.push(...e):(!zi||!zi.includes(e,e.allowRecurse?io+1:io))&&Ya.push(e),y2()}function mm(e,t=Kf?Ji+1:0){for(e=e||new Map;tVf(r)-Vf(i)),io=0;ioe.id==null?1/0:e.id,a8=(e,t)=>{const r=Vf(e)-Vf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function b2(e){k0=!1,Kf=!0,e=e||new Map,Er.sort(a8);const t=r=>yv(e,r);try{for(Ji=0;Jii8){const i=t.ownerInstance,a=i&&Xf(i.type);return Ue(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. 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.`),!0}else e.set(t,r+1)}}let go=!1;const ja=new Set;Tl().__VUE_HMR_RUNTIME__={createRecord:Pc(w2),rerender:Pc(u8),reload:Pc(l8)};const aa=new Map;function s8(e){const t=e.type.__hmrId;let r=aa.get(t);r||(w2(t,e.type),r=aa.get(t)),r.instances.add(e)}function f8(e){aa.get(e.type.__hmrId).instances.delete(e)}function w2(e,t){return aa.has(e)?!1:(aa.set(e,{initialDef:If(t),instances:new Set}),!0)}function If(e){return p_(e)?e.__vccOpts:e}function u8(e,t){const r=aa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,If(i.type).render=t),i.renderCache=[],go=!0,i.update(),go=!1}))}function l8(e,t){const r=aa.get(e);if(!r)return;t=If(t),ym(r.initialDef,t);const i=[...r.instances];for(const a of i){const n=If(a.type);ja.has(n)||(n!==r.initialDef&&ym(n,t),ja.add(n)),a.appContext.propsCache.delete(a.type),a.appContext.emitsCache.delete(a.type),a.appContext.optionsCache.delete(a.type),a.ceReload?(ja.add(n),a.ceReload(t.styles),ja.delete(n)):a.parent?lu(a.parent.update):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}gh(()=>{for(const a of i)ja.delete(If(a.type))})}function ym(e,t){Pt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Pc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bi,wf=[],$0=!1;function hu(e,...t){Bi?Bi.emit(e,...t):$0||wf.push({event:e,args:t})}function bv(e,t){var r,i;Bi=e,Bi?(Bi.enabled=!0,wf.forEach(({event:a,args:n})=>Bi.emit(a,...n)),wf=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{bv(n,t)}),setTimeout(()=>{Bi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,$0=!0,wf=[])},3e3)):($0=!0,wf=[])}function h8(e,t){hu("app:init",e,t,{Fragment:Lt,Text:xo,Comment:tr,Static:mo})}function c8(e){hu("app:unmount",e)}const D0=wv("component:added"),_2=wv("component:updated"),d8=wv("component:removed"),p8=e=>{Bi&&typeof Bi.cleanupBuffer=="function"&&!Bi.cleanupBuffer(e)&&d8(e)};function wv(e){return t=>{hu(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const v8=M2("perf:start"),g8=M2("perf:end");function M2(e){return(t,r,i)=>{hu(e,t.appContext.app,t.uid,t,r,i)}}function m8(e,t,r){hu("component:emit",e.appContext.app,e,t,r)}function y8(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||$t;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(xn(t)in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${xn(t)}" prop.`);else{const R=M[t];Qe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),u=n&&t.slice(7);if(u&&u in i){const M=`${u==="modelValue"?"model":u}Modifiers`,{number:S,trim:R}=i[M]||$t;R&&(a=r.map(C=>Vt(C)?C.trim():C)),S&&(a=r.map(Rl))}m8(e,t,a);{const M=t.toLowerCase();M!==t&&i[xn(M)]&&Ue(`Event "${M}" is emitted in component ${Rh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Hr(t)}" instead of "${t}".`)}let c,d=i[c=xn(t)]||i[c=xn(Kr(t))];!d&&n&&(d=i[c=xn(Hr(t))]),d&&Zr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Zr(m,e,6,a)}}function S2(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let u={},c=!1;if(!Qe(e)){const d=m=>{const M=S2(m,t,!0);M&&(c=!0,Pt(u,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>u[d]=null):Pt(u,n),Rt(e)&&i.set(e,u),u)}function mh(e,t){return!e||!Ps(t)?!1:(t=t.slice(2).replace(/Once$/,""),wt(e,t[0].toLowerCase()+t.slice(1))||wt(e,Hr(t))||wt(e,t))}let er=null,yh=null;function zf(e){const t=er;return er=e,yh=e&&e.type.__scopeId||null,t}function x2(e){yh=e}function E2(){yh=null}const b8=e=>_v;function _v(e,t=er,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&z0(-1);const n=zf(t);let u;try{u=e(...a)}finally{zf(n),i._d&&z0(1)}return _2(t),u};return i._n=!0,i._c=!0,i._d=!0,i}let F0=!1;function Cl(){F0=!0}function nl(e){const{type:t,vnode:r,proxy:i,withProxy:a,props:n,propsOptions:[u],slots:c,attrs:d,emit:m,render:M,renderCache:S,data:R,setupState:C,ctx:P,inheritAttrs:k}=e;let L,I;const B=zf(e);F0=!1;try{if(r.shapeFlag&4){const W=a||i;L=Ur(M.call(W,W,S,n,C,R,P)),I=d}else{const W=t;d===n&&Cl(),L=Ur(W.length>1?W(n,{get attrs(){return Cl(),d},slots:c,emit:m}):W(n,null)),I=t.props?d:_8(d)}}catch(W){Bf.length=0,ba(W,e,1),L=Zt(tr)}let H=L,F;if(L.patchFlag>0&&L.patchFlag&2048&&([H,F]=w8(L)),I&&k!==!1){const W=Object.keys(I),{shapeFlag:Y}=H;if(W.length){if(Y&7)u&&W.some(xl)&&(I=M8(I,u)),H=di(H,I);else if(!F0&&H.type!==tr){const ie=Object.keys(d),J=[],V=[];for(let oe=0,_=ie.length;oe<_;oe++){const o=ie[oe];Ps(o)?xl(o)||J.push(o[2].toLowerCase()+o.slice(3)):V.push(o)}V.length&&Ue(`Extraneous non-props attributes (${V.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(bm(H)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),H=di(H),H.dirs=H.dirs?H.dirs.concat(r.dirs):r.dirs),r.transition&&(bm(H)||Ue("Component inside renders non-element root node that cannot be animated."),H.transition=r.transition),F?F(H):L=H,zf(B),L}const w8=e=>{const t=e.children,r=e.dynamicChildren,i=Mv(t);if(!i)return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,u=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Ur(i),u]};function Mv(e){let t;for(let r=0;r{let t;for(const r in e)(r==="class"||r==="style"||Ps(r))&&((t||(t={}))[r]=e[r]);return t},M8=(e,t)=>{const r={};for(const i in e)(!xl(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},bm=e=>e.shapeFlag&7||e.type===tr;function S8(e,t,r){const{props:i,children:a,component:n}=e,{props:u,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&go||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?wm(i,u,m):!!u;if(d&8){const M=t.dynamicProps;for(let S=0;Se.__isSuspense,x8={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,u,c,d,m){e==null?R8(t,r,i,a,n,u,c,d,m):A8(e,t,r,i,a,u,c,d,m)},hydrate:T8,create:xv,normalize:O8},E8=x8;function Gf(e,t){const r=e.props&&e.props[t];Qe(r)&&r()}function R8(e,t,r,i,a,n,u,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=xv(e,a,i,t,S,r,n,u,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,u),R.deps>0?(Gf(e,"onPending"),Gf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,u),Za(R,e.ssFallback)):R.resolve(!1,!0)}function A8(e,t,r,i,a,n,u,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,C=t.ssFallback,{activeBranch:P,pendingBranch:k,isInFallback:L,isHydrating:I}=S;if(k)S.pendingBranch=R,Li(R,k)?(d(k,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():L&&(d(P,C,r,i,a,null,n,u,c),Za(S,C))):(S.pendingId++,I?(S.isHydrating=!1,S.activeBranch=k):m(k,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():(d(P,C,r,i,a,null,n,u,c),Za(S,C))):P&&Li(R,P)?(d(P,R,r,i,a,S,n,u,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0&&S.resolve()));else if(P&&Li(R,P))d(P,R,r,i,a,S,n,u,c),Za(S,R);else if(Gf(t,"onPending"),S.pendingBranch=R,S.pendingId++,d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0)S.resolve();else{const{timeout:B,pendingId:H}=S;B>0?setTimeout(()=>{S.pendingId===H&&S.fallback(C)},B):B===0&&S.fallback(C)}}let _m=!1;function xv(e,t,r,i,a,n,u,c,d,m,M=!1){_m||(_m=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:S,m:R,um:C,n:P,o:{parentNode:k,remove:L}}=m;let I;const B=I8(e);B&&t!=null&&t.pendingBranch&&(I=t.pendingId,t.deps++);const H=e.props?Al(e.props.timeout):void 0;vv(H,"Suspense timeout");const F={vnode:e,parent:t,parentComponent:r,isSVG:u,container:i,hiddenContainer:a,anchor:n,deps:0,pendingId:0,timeout:typeof H=="number"?H:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:M,isUnmounted:!1,effects:[],resolve(W=!1,Y=!1){{if(!W&&!F.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(F.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:ie,activeBranch:J,pendingBranch:V,pendingId:oe,effects:_,parentComponent:o,container:f}=F;if(F.isHydrating)F.isHydrating=!1;else if(!W){const p=J&&V.transition&&V.transition.mode==="out-in";p&&(J.transition.afterLeave=()=>{oe===F.pendingId&&R(V,f,w,0)});let{anchor:w}=F;J&&(w=P(J),C(J,o,F,!0)),p||R(V,f,w,0)}Za(F,V),F.pendingBranch=null,F.isInFallback=!1;let l=F.parent,h=!1;for(;l;){if(l.pendingBranch){l.effects.push(..._),h=!0;break}l=l.parent}h||gh(_),F.effects=[],B&&t&&t.pendingBranch&&I===t.pendingId&&(t.deps--,t.deps===0&&!Y&&t.resolve()),Gf(ie,"onResolve")},fallback(W){if(!F.pendingBranch)return;const{vnode:Y,activeBranch:ie,parentComponent:J,container:V,isSVG:oe}=F;Gf(Y,"onFallback");const _=P(ie),o=()=>{F.isInFallback&&(S(null,W,V,_,J,null,oe,c,d),Za(F,W))},f=W.transition&&W.transition.mode==="out-in";f&&(ie.transition.afterLeave=o),F.isInFallback=!0,C(ie,J,null,!0),f||o()},move(W,Y,ie){F.activeBranch&&R(F.activeBranch,W,Y,ie),F.container=W},next(){return F.activeBranch&&P(F.activeBranch)},registerDep(W,Y){const ie=!!F.pendingBranch;ie&&F.deps++;const J=W.vnode.el;W.asyncDep.catch(V=>{ba(V,W,0)}).then(V=>{if(W.isUnmounted||F.isUnmounted||F.pendingId!==W.suspenseId)return;W.asyncResolved=!0;const{vnode:oe}=W;Tf(oe),Z0(W,V,!1),J&&(oe.el=J);const _=!J&&W.subTree.el;Y(W,oe,k(J||W.subTree.el),J?null:P(W.subTree),F,u,d),_&&L(_),Sv(W,oe.el),Of(),ie&&--F.deps===0&&F.resolve()})},unmount(W,Y){F.isUnmounted=!0,F.activeBranch&&C(F.activeBranch,r,W,Y),F.pendingBranch&&C(F.pendingBranch,r,W,Y)}};return F}function T8(e,t,r,i,a,n,u,c,d){const m=t.suspense=xv(t,i,r,e.parentNode,document.createElement("div"),null,a,n,u,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,u);return m.deps===0&&m.resolve(!1,!0),M}function O8(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=Mm(i?r.default:r),e.ssFallback=i?Mm(r.fallback):Zt(tr)}function Mm(e){let t;if(Qe(e)){const r=fa&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Wr,i_())}if(ze(e)){const r=Mv(e);r||Ue(" slots expect a single root node."),e=r}return e=Ur(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function A2(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):gh(e)}function Za(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e,a=r.el=t.el;i&&i.subTree===r&&(i.vnode.el=a,Sv(i,a))}function I8(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function T2(e,t){return cu(e,null,t)}function O2(e,t){return cu(e,null,Pt({},t,{flush:"post"}))}function P8(e,t){return cu(e,null,Pt({},t,{flush:"sync"}))}const qu={};function lr(e,t,r){return Qe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),cu(e,t,r)}function cu(e,t,{immediate:r,deep:i,flush:a,onTrack:n,onTrigger:u}=$t){var c;t||(r!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const d=W=>{Ue("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=Qw()===((c=Qt)==null?void 0:c.scope)?Qt:null;let M,S=!1,R=!1;if(Xt(e)?(M=()=>e.value,S=Hf(e)):po(e)?(M=()=>e,i=!0):ze(e)?(R=!0,S=e.some(W=>po(W)||Hf(W)),M=()=>e.map(W=>{if(Xt(W))return W.value;if(po(W))return Go(W);if(Qe(W))return en(W,m,2);d(W)})):Qe(e)?t?M=()=>en(e,m,2):M=()=>{if(!(m&&m.isUnmounted))return C&&C(),Zr(e,m,3,[P])}:(M=qr,d(e)),t&&i){const W=M;M=()=>Go(W())}let C,P=W=>{C=H.onStop=()=>{en(W,m,4)}},k;if(fs)if(P=qr,t?r&&Zr(t,m,3,[M(),R?[]:void 0,P]):M(),a==="sync"){const W=g_();k=W.__watcherHandles||(W.__watcherHandles=[])}else return qr;let L=R?new Array(e.length).fill(qu):qu;const I=()=>{if(H.active)if(t){const W=H.run();(i||S||(R?W.some((Y,ie)=>as(Y,L[ie])):as(W,L)))&&(C&&C(),Zr(t,m,3,[W,L===qu?void 0:R&&L[0]===qu?[]:L,P]),L=W)}else H.run()};I.allowRecurse=!!t;let B;a==="sync"?B=I:a==="post"?B=()=>gr(I,m&&m.suspense):(I.pre=!0,m&&(I.id=m.uid),B=()=>lu(I));const H=new uu(M,B);H.onTrack=n,H.onTrigger=u,t?r?I():L=H.run():a==="post"?gr(H.run.bind(H),m&&m.suspense):H.run();const F=()=>{H.stop(),m&&m.scope&&iv(m.scope.effects,H)};return k&&k.push(F),F}function C8(e,t,r){const i=this.proxy,a=Vt(e)?e.includes(".")?I2(i,e):()=>i[e]:e.bind(i,i);let n;Qe(t)?n=t:(n=t.handler,r=t);const u=Qt;Eo(this);const c=cu(a,n.bind(i),r);return u?Eo(u):yo(),c}function I2(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a{Go(r,t)});else if(Gw(e))for(const r in e)Go(e[r],t);return e}function P2(e){V4(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function ol(e,t){const r=er;if(r===null)return Ue("withDirectives can only be used inside render functions."),e;const i=Eh(r)||r.proxy,a=e.dirs||(e.dirs=[]);for(let n=0;n{e.isMounted=!0}),Mh(()=>{e.isUnmounting=!0}),e}const ni=[Function,Array],Rv={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ni,onEnter:ni,onAfterEnter:ni,onEnterCancelled:ni,onBeforeLeave:ni,onLeave:ni,onAfterLeave:ni,onLeaveCancelled:ni,onBeforeAppear:ni,onAppear:ni,onAfterAppear:ni,onAppearCancelled:ni},B8={name:"BaseTransition",props:Rv,setup(e,{slots:t}){const r=Fi(),i=Ev();let a;return()=>{const n=t.default&&bh(t.default(),!0);if(!n||!n.length)return;let u=n[0];if(n.length>1){let k=!1;for(const L of n)if(L.type!==tr){if(k){Ue(" can only be used on a single element or component. Use for lists.");break}u=L,k=!0}}const c=lt(e),{mode:d}=c;if(d&&d!=="in-out"&&d!=="out-in"&&d!=="default"&&Ue(`invalid mode: ${d}`),i.isLeaving)return Cc(u);const m=Sm(u);if(!m)return Cc(u);const M=ss(m,c,i,r);sa(m,M);const S=r.subTree,R=S&&Sm(S);let C=!1;const{getTransitionKey:P}=m.type;if(P){const k=P();a===void 0?a=k:k!==a&&(a=k,C=!0)}if(R&&R.type!==tr&&(!Li(m,R)||C)){const k=ss(R,c,i,r);if(sa(R,k),d==="out-in")return i.isLeaving=!0,k.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&r.update()},Cc(u);d==="in-out"&&m.type!==tr&&(k.delayLeave=(L,I,B)=>{const H=B2(i,R);H[String(R.key)]=R,L._leaveCb=()=>{I(),L._leaveCb=void 0,delete M.delayedLeave},M.delayedLeave=B})}return u}}},C2=B8;function B2(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ss(e,t,r,i){const{appear:a,mode:n,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:m,onEnterCancelled:M,onBeforeLeave:S,onLeave:R,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:k,onAppear:L,onAfterAppear:I,onAppearCancelled:B}=t,H=String(e.key),F=B2(r,e),W=(J,V)=>{J&&Zr(J,i,9,V)},Y=(J,V)=>{const oe=V[1];W(J,V),ze(J)?J.every(_=>_.length<=1)&&oe():J.length<=1&&oe()},ie={mode:n,persisted:u,beforeEnter(J){let V=c;if(!r.isMounted)if(a)V=k||c;else return;J._leaveCb&&J._leaveCb(!0);const oe=F[H];oe&&Li(e,oe)&&oe.el._leaveCb&&oe.el._leaveCb(),W(V,[J])},enter(J){let V=d,oe=m,_=M;if(!r.isMounted)if(a)V=L||d,oe=I||m,_=B||M;else return;let o=!1;const f=J._enterCb=l=>{o||(o=!0,l?W(_,[J]):W(oe,[J]),ie.delayedLeave&&ie.delayedLeave(),J._enterCb=void 0)};V?Y(V,[J,f]):f()},leave(J,V){const oe=String(e.key);if(J._enterCb&&J._enterCb(!0),r.isUnmounting)return V();W(S,[J]);let _=!1;const o=J._leaveCb=f=>{_||(_=!0,V(),f?W(P,[J]):W(C,[J]),J._leaveCb=void 0,F[oe]===e&&delete F[oe])};F[oe]=e,R?Y(R,[J,o]):o()},clone(J){return ss(J,t,r,i)}};return ie}function Cc(e){if(Ls(e))return e=di(e),e.children=null,e}function Sm(e){return Ls(e)?e.children?e.children[0]:void 0:e}function sa(e,t){e.shapeFlag&6&&e.component?sa(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 bh(e,t=!1,r){let i=[],a=0;for(let n=0;n1)for(let n=0;nPt({name:e.name},t,{setup:e}))():e}const ta=e=>!!e.type.__asyncLoader;function L8(e){Qe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:u=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let C;return d||(C=d=t().catch(P=>{if(P=P instanceof Error?P:new Error(String(P)),c)return new Promise((k,L)=>{c(P,()=>k(S()),()=>L(P),M+1)});throw P}).then(P=>{if(C!==d&&d)return d;if(P||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),P&&(P.__esModule||P[Symbol.toStringTag]==="Module")&&(P=P.default),P&&!Rt(P)&&!Qe(P))throw new Error(`Invalid async component load result: ${P}`);return m=P,P}))};return Bs({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const C=Qt;if(m)return()=>Bc(m,C);const P=B=>{d=null,ba(B,C,13,!i)};if(u&&C.suspense||fs)return R().then(B=>()=>Bc(B,C)).catch(B=>(P(B),()=>i?Zt(i,{error:B}):null));const k=mr(!1),L=mr(),I=mr(!!a);return a&&setTimeout(()=>{I.value=!1},a),n!=null&&setTimeout(()=>{if(!k.value&&!L.value){const B=new Error(`Async component timed out after ${n}ms.`);P(B),L.value=B}},n),R().then(()=>{k.value=!0,C.parent&&Ls(C.parent.vnode)&&lu(C.parent.update)}).catch(B=>{P(B),L.value=B}),()=>{if(k.value&&m)return Bc(m,C);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!I.value)return Zt(r)}}})}function Bc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,u=Zt(e,i,a);return u.ref=r,u.ce=n,delete t.vnode.ce,u}const Ls=e=>e.type.__isKeepAlive,N8={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=Fi(),i=r.ctx;if(!i.renderer)return()=>{const B=t.default&&t.default();return B&&B.length===1?B[0]:B};const a=new Map,n=new Set;let u=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(B,H,F,W,Y)=>{const ie=B.component;m(B,H,F,0,c),d(ie.vnode,B,H,F,ie,c,W,B.slotScopeIds,Y),gr(()=>{ie.isDeactivated=!1,ie.a&&so(ie.a);const J=B.props&&B.props.onVnodeMounted;J&&Dr(J,ie.parent,B)},c),D0(ie)},i.deactivate=B=>{const H=B.component;m(B,R,null,1,c),gr(()=>{H.da&&so(H.da);const F=B.props&&B.props.onVnodeUnmounted;F&&Dr(F,H.parent,B),H.isDeactivated=!0},c),D0(H)};function C(B){Lc(B),M(B,r,c,!0)}function P(B){a.forEach((H,F)=>{const W=Xf(H.type);W&&(!B||!B(W))&&k(F)})}function k(B){const H=a.get(B);!u||!Li(H,u)?C(H):u&&Lc(u),a.delete(B),n.delete(B)}lr(()=>[e.include,e.exclude],([B,H])=>{B&&P(F=>_f(B,F)),H&&P(F=>!_f(H,F))},{flush:"post",deep:!0});let L=null;const I=()=>{L!=null&&a.set(L,Nc(r.subTree))};return Ns(I),_h(I),Mh(()=>{a.forEach(B=>{const{subTree:H,suspense:F}=r,W=Nc(H);if(B.type===W.type&&B.key===W.key){Lc(W);const Y=W.component.da;Y&&gr(Y,F);return}C(B)})}),()=>{if(L=null,!t.default)return null;const B=t.default(),H=B[0];if(B.length>1)return Ue("KeepAlive should contain exactly one component child."),u=null,B;if(!Nn(H)||!(H.shapeFlag&4)&&!(H.shapeFlag&128))return u=null,H;let F=Nc(H);const W=F.type,Y=Xf(ta(F)?F.type.__asyncResolved||{}:W),{include:ie,exclude:J,max:V}=e;if(ie&&(!Y||!_f(ie,Y))||J&&Y&&_f(J,Y))return u=F,H;const oe=F.key==null?W:F.key,_=a.get(oe);return F.el&&(F=di(F),H.shapeFlag&128&&(H.ssContent=F)),L=oe,_?(F.el=_.el,F.component=_.component,F.transition&&sa(F,F.transition),F.shapeFlag|=512,n.delete(oe),n.add(oe)):(n.add(oe),V&&n.size>parseInt(V,10)&&k(n.values().next().value)),F.shapeFlag|=256,u=F,R2(H.type)?H:F}}},k8=N8;function _f(e,t){return ze(e)?e.some(r=>_f(r,t)):Vt(e)?e.split(",").includes(t):K4(e)?e.test(t):!1}function L2(e,t){k2(e,"a",t)}function N2(e,t){k2(e,"da",t)}function k2(e,t,r=Qt){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(wh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Ls(a.parent.vnode)&&$8(i,t,r,a),a=a.parent}}function $8(e,t,r,i){const a=wh(t,e,i,!0);Sh(()=>{iv(i[t],a)},r)}function Lc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Nc(e){return e.shapeFlag&128?e.ssContent:e}function wh(e,t,r=Qt,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...u)=>{if(r.isUnmounted)return;ga(),Eo(r);const c=Zr(t,r,e,u);return yo(),ma(),c});return i?a.unshift(n):a.push(n),n}else{const a=xn(gv[e].replace(/ hook$/,""));Ue(`${a} 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 Vn=e=>(t,r=Qt)=>(!fs||e==="sp")&&wh(e,(...i)=>t(...i),r),$2=Vn("bm"),Ns=Vn("m"),Av=Vn("bu"),_h=Vn("u"),Mh=Vn("bum"),Sh=Vn("um"),D2=Vn("sp"),F2=Vn("rtg"),j2=Vn("rtc");function U2(e,t=Qt){wh("ec",e,t)}const Bl="components",D8="directives";function F8(e,t){return Tv(Bl,e,!0,t)||e}const H2=Symbol.for("v-ndc");function j8(e){return Vt(e)?Tv(Bl,e,!1)||e:e||H2}function U8(e){return Tv(D8,e)}function Tv(e,t,r=!0,i=!1){const a=er||Qt;if(a){const n=a.type;if(e===Bl){const c=Xf(n,!1);if(c&&(c===t||c===Kr(t)||c===_o(Kr(t))))return n}const u=xm(a[e]||n[e],t)||xm(a.appContext[e],t);if(!u&&i)return n;if(r&&!u){const c=e===Bl?` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return u}else Ue(`resolve${_o(e.slice(0,-1))} can only be used in render() or setup().`)}function xm(e,t){return e&&(e[t]||e[Kr(t)]||e[_o(Kr(t))])}function Ii(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||Vt(e)){a=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,n&&n[c]));else{const u=Object.keys(e);a=new Array(u.length);for(let c=0,d=u.length;c{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function j0(e,t,r={},i,a){if(er.isCE||er.parent&&ta(er.parent)&&er.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(Ue("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."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const u=n&&q2(n(r)),c=Cv(Lt,{key:r.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function q2(e){return e.some(t=>Nn(t)?!(t.type===tr||t.type===Lt&&!q2(t.children)):!0)?e:null}function q8(e,t){const r={};if(!Rt(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:xn(i)]=e[i];return r}const U0=e=>e?l_(e)?Eh(e)||e.proxy:U0(e.parent):null,ra=Pt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Wa(e.props),$attrs:e=>Wa(e.attrs),$slots:e=>Wa(e.slots),$refs:e=>Wa(e.refs),$parent:e=>U0(e.parent),$root:e=>U0(e.root),$emit:e=>e.emit,$options:e=>Iv(e),$forceUpdate:e=>e.f||(e.f=()=>lu(e.update)),$nextTick:e=>e.n||(e.n=uo.bind(e.proxy)),$watch:e=>C8.bind(e)}),Ov=e=>e==="_"||e==="$",kc=(e,t)=>e!==$t&&!e.__isScriptSetup&&wt(e,t),Pf={get({_:e},t){const{ctx:r,setupState:i,data:a,props:n,accessCache:u,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const C=u[t];if(C!==void 0)switch(C){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(kc(i,t))return u[t]=1,i[t];if(a!==$t&&wt(a,t))return u[t]=2,a[t];if((m=e.propsOptions[0])&&wt(m,t))return u[t]=3,n[t];if(r!==$t&&wt(r,t))return u[t]=4,r[t];H0&&(u[t]=0)}}const M=ra[t];let S,R;if(M)return t==="$attrs"?(Tr(e,"get",t),Cl()):t==="$slots"&&Tr(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==$t&&wt(r,t))return u[t]=4,r[t];if(R=d.config.globalProperties,wt(R,t))return R[t];er&&(!Vt(t)||t.indexOf("__v")!==0)&&(a!==$t&&Ov(t[0])&&wt(a,t)?Ue(`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===er&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return kc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&wt(a,t)?(Ue(`Cannot mutate - - - - - - + + + + + + + From bddf74086fc81a0a51afa765a0b3a65ad88e766b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 4 Aug 2023 12:39:14 +0200 Subject: [PATCH 035/121] fix powerdog --- packages/modules/devices/powerdog/counter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/modules/devices/powerdog/counter.py b/packages/modules/devices/powerdog/counter.py index ded72767fd..1f55670bc7 100644 --- a/packages/modules/devices/powerdog/counter.py +++ b/packages/modules/devices/powerdog/counter.py @@ -30,7 +30,9 @@ def __init__(self, def update(self, inverter_power: float): with self.__tcp_client: if self.component_config.configuration.position_evu: - power = self.__tcp_client.read_input_registers(40000, ModbusDataType.INT_32, unit=1) * -1 + export_power = self.__tcp_client.read_input_registers(40000, ModbusDataType.INT_32, unit=1) * -1 + import_power = self.__tcp_client.read_input_registers(40024, ModbusDataType.INT_32, unit=1) + power = export_power + import_power else: home_consumption = self.__tcp_client.read_input_registers(40026, ModbusDataType.INT_32, unit=1) power = home_consumption + inverter_power From 7d1b67626cdcf122068ed83fe45e0b43c1600c71 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 4 Aug 2023 12:54:58 +0200 Subject: [PATCH 036/121] remove obsolet simcount modules from loadvars --- loadvars.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/loadvars.sh b/loadvars.sh index 129331c07c..2eb1dd4d59 100755 --- a/loadvars.sh +++ b/loadvars.sh @@ -1092,7 +1092,7 @@ loadvars(){ fi echo $hausverbrauch > /var/www/html/openWB/ramdisk/hausverbrauch usesimbezug=0 - if [[ $wattbezugmodul == "bezug_solarwatt" ]]|| [[ $wattbezugmodul == "bezug_rct" ]]|| [[ $wattbezugmodul == "bezug_kostalplenticoreem300haus" ]] || [[ $wattbezugmodul == "bezug_solarlog" ]] ; then + if [[ $wattbezugmodul == "bezug_kostalplenticoreem300haus" ]] ; then usesimbezug=1 fi if ((usesimbezug == 1)); then @@ -1134,7 +1134,7 @@ loadvars(){ if [[ $speichermodul == "speicher_kostalplenticore" ]] && [[ $pvwattmodul == "wr_plenticore" ]]; then usesimpv=1 fi - if [[ $pvwattmodul == "wr_rct" ]]|| [[ $pvwattmodul == "wr_solarwatt" ]] || [[ $pvwattmodul == "wr_kostalpikovar2" ]]; then + if [[ $pvwattmodul == "wr_kostalpikovar2" ]]; then usesimpv=1 fi if ((usesimpv == 1)); then @@ -1182,7 +1182,7 @@ loadvars(){ echo "$pvallwh" > /var/www/html/openWB/ramdisk/pvallwh fi - if [[ $speichermodul == "speicher_tesvoltsma" ]] || [[ $speichermodul == "speicher_solarwatt" ]] || [[ $speichermodul == "speicher_rct" ]]|| [[ $speichermodul == "speicher_kostalplenticore" ]] ; then + if [[ $speichermodul == "speicher_tesvoltsma" ]] || [[ $speichermodul == "speicher_kostalplenticore" ]] ; then ra='^-?[0-9]+$' watt2=$( Date: Fri, 4 Aug 2023 15:21:01 +0200 Subject: [PATCH 037/121] Revert "Onedrive_Backup (#968)" This reverts commit 0b4c1dd03fbe009936510b0d6efc300082595d3c. --- .github/workflows/github-actions-python.yml | 2 +- packages/helpermodules/command.py | 27 --- .../backup_clouds/onedrive/__init__.py | 0 .../modules/backup_clouds/onedrive/api.py | 170 -------------- .../backup_clouds/onedrive/backup_cloud.py | 42 ---- .../modules/backup_clouds/onedrive/config.py | 30 --- .../onedrive/msdrive/constants.py | 3 - .../backup_clouds/onedrive/msdrive/drive.py | 208 ------------------ .../onedrive/msdrive/exceptions.py | 14 -- .../onedrive/msdrive/onedrive.py | 30 --- requirements.txt | 1 - 11 files changed, 1 insertion(+), 526 deletions(-) delete mode 100644 packages/modules/backup_clouds/onedrive/__init__.py delete mode 100644 packages/modules/backup_clouds/onedrive/api.py delete mode 100644 packages/modules/backup_clouds/onedrive/backup_cloud.py delete mode 100644 packages/modules/backup_clouds/onedrive/config.py delete mode 100644 packages/modules/backup_clouds/onedrive/msdrive/constants.py delete mode 100644 packages/modules/backup_clouds/onedrive/msdrive/drive.py delete mode 100644 packages/modules/backup_clouds/onedrive/msdrive/exceptions.py delete mode 100644 packages/modules/backup_clouds/onedrive/msdrive/onedrive.py diff --git a/.github/workflows/github-actions-python.yml b/.github/workflows/github-actions-python.yml index 7dc26fc5ee..1d2a1020b4 100644 --- a/.github/workflows/github-actions-python.yml +++ b/.github/workflows/github-actions-python.yml @@ -14,7 +14,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install flake8 pytest paho-mqtt requests-mock jq pyjwt==2.6.0 bs4 pkce typing_extensions python-dateutil==2.8.2 msal + pip install flake8 pytest paho-mqtt requests-mock jq pyjwt==2.6.0 bs4 pkce typing_extensions python-dateutil==2.8.2 - name: Flake8 with annotations in packages folder uses: TrueBrain/actions-flake8@v2.1 with: diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 6b20eab52c..83a4502f4d 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -10,10 +10,8 @@ import traceback from pathlib import Path import paho.mqtt.client as mqtt - from control.chargepoint import chargepoint from control.chargepoint.chargepoint_template import get_autolock_plan_default, get_chargepoint_template_default -from modules.backup_clouds.onedrive.api import generateMSALAuthCode, retrieveMSALTokens from helpermodules import measurement_log from helpermodules.broker import InternalBrokerClient @@ -30,7 +28,6 @@ import dataclass_utils from modules.common.configurable_vehicle import IntervalConfig - log = logging.getLogger(__name__) @@ -698,30 +695,6 @@ def restoreBackup(self, connection_id: str, payload: dict) -> None: f'Restore-Status: {result.returncode}
Meldung: {result.stdout.decode("utf-8")}', MessageType.ERROR) - 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: - 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) - pub_user_message(payload, connection_id, result["message"], result["MessageType"]) - - 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: - 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) - pub_user_message(payload, connection_id, result["message"], result["MessageType"]) - def factoryReset(self, connection_id: str, payload: dict) -> None: Path(Path(__file__).resolve().parents[2] / 'data' / 'restore' / 'factory_reset').touch() pub_user_message(payload, connection_id, diff --git a/packages/modules/backup_clouds/onedrive/__init__.py b/packages/modules/backup_clouds/onedrive/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/modules/backup_clouds/onedrive/api.py b/packages/modules/backup_clouds/onedrive/api.py deleted file mode 100644 index 51e85dfdb1..0000000000 --- a/packages/modules/backup_clouds/onedrive/api.py +++ /dev/null @@ -1,170 +0,0 @@ -import logging -import pickle -import json -import paho.mqtt.publish as publish -import msal -import base64 - -from msal import PublicClientApplication -from helpermodules.messaging import MessageType -from modules.backup_clouds.onedrive.config import OneDriveBackupCloud, OneDriveBackupCloudConfiguration - - -log = logging.getLogger(__name__) - - -def encode_str_base64(string: str) -> str: - string_bytes = string.encode("ascii") - string_base64_bytes = base64.b64encode(string_bytes) - string_base64_string = string_base64_bytes.decode("ascii") - return string_base64_string - - -def save_tokencache(config: OneDriveBackupCloudConfiguration, cache: str) -> None: - # encode cache to base64 and save to config - log.debug("saving updated tokencache to config") - config.persistent_tokencache = encode_str_base64(cache) - - # construct full configuartion object for cloud backup - backupcloud = OneDriveBackupCloud() - backupcloud.configuration = config - backupcloud_to_mqtt = json.dumps(backupcloud.__dict__, default=lambda o: o.__dict__) - log.debug("Config to MQTT:" + str(backupcloud_to_mqtt)) - - publish.single("openWB/set/system/backup_cloud/config", backupcloud_to_mqtt, retain=True, hostname="localhost") - - -def get_tokens(config: OneDriveBackupCloudConfiguration) -> dict: - result = None - cache = msal.SerializableTokenCache() - - if config.persistent_tokencache: - cache.deserialize(base64.b64decode(config.persistent_tokencache)) - else: - raise Exception("No tokencache found, please re-configure and re-authorize access Cloud backup settings.") - - # Create a public client application with msal - log.debug("creating MSAL public client application") - app = msal.PublicClientApplication(client_id=config.clientID, authority=config.authority, token_cache=cache) - - log.debug("getting accounts") - accounts = app.get_accounts() - if accounts: - chosen = accounts[0] # assume that we only will have a single account in cache - log.debug("selected account " + str(chosen["username"])) - # Now let's try to find a token in cache for this account - result = app.acquire_token_silent(scopes=config.scope, account=chosen) - else: - raise Exception("No matching account found,please re-configure and re-authorize access Cloud backup settings.") - - log.debug("done acquring tokens") - if not result: # We have no token for this account, so the end user shall sign-in - raise Exception("No token found, please re-configure and re-authorize access Cloud backup settings.") - - if "access_token" in result: - log.debug("access token retrieved") - save_tokencache(config=config, cache=cache.serialize()) - else: - # Print the error - raise Exception("Error retrieving access token", result.get("error"), result.get("error_description")) - return result - - -def generateMSALAuthCode(cloudbackup: OneDriveBackupCloud) -> dict: - """ startet den Authentifizierungsprozess für MSAL (Microsoft Authentication Library) für Onedrive Backup - und speichert den AuthCode in der Konfiguration""" - result = dict( - message="", - MessageType=MessageType.SUCCESS - ) - - if cloudbackup is None: - result["message"] = """Es ist keine Backup-Cloud konfiguriert. - Bitte Konfiguration speichern und erneut versuchen.
""" - result["MessageType"] = MessageType.WARNING - return result - - # Create a public client application with msal - app = PublicClientApplication( - client_id=cloudbackup.configuration.clientID, - authority=cloudbackup.configuration.authority - ) - - # create device flow to obtain auth code - flow = app.initiate_device_flow(cloudbackup.configuration.scope) - if "user_code" not in flow: - raise Exception( - "Fail to create device flow. Err: %s" % json.dumps(flow, indent=4)) - - flow["expires_at"] = 0 # Mark it as expired immediately to prevent - pickleString = str(pickle.dumps(flow), encoding='latin1') - - cloudbackup.configuration.flow = str(pickleString) - cloudbackup.configuration.authcode = flow["user_code"] - cloudbackup.configuration.authurl = flow["verification_uri"] - cloudbackupconfig_to_mqtt = json.dumps(cloudbackup.__dict__, default=lambda o: o.__dict__) - - publish.single( - "openWB/set/system/backup_cloud/config", cloudbackupconfig_to_mqtt, retain=True, hostname="localhost" - ) - - result["message"] = """Authorisierung gestartet, bitte den Link öffen, Code eingeben, - und Zugang authorisieren. Anschließend Zugangsberechtigung abrufen.""" - result["MessageType"] = MessageType.SUCCESS - - return result - - -def retrieveMSALTokens(cloudbackup: OneDriveBackupCloud) -> dict: - result = dict( - message="", - MessageType=MessageType.SUCCESS - ) - if cloudbackup is None: - result["message"] = """Es ist keine Backup-Cloud konfiguriert. - Bitte Konfiguration speichern und erneut versuchen.
""" - result["MessageType"] = MessageType.WARNING - return result - - # Create a public client application with msal - tokens = None - cache = msal.SerializableTokenCache() - app = PublicClientApplication(client_id=cloudbackup.configuration.clientID, - authority=cloudbackup.configuration.authority, token_cache=cache) - - f = cloudbackup.configuration.flow - if f is None: - result["message"] = """Es ist wurde kein Auth-Code erstellt. - Bitte zunächst Auth-Code erstellen und den Authorisierungsprozess beenden.
""" - result["MessageType"] = MessageType.WARNING - return result - flow = pickle.loads(bytes(f, encoding='latin1')) - - tokens = app.acquire_token_by_device_flow(flow) - # https://msal-python.readthedocs.io/en/latest/#msal.PublicClientApplication.acquire_token_by_device_flow - # https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code - # Check if the token was obtained successfully - if "access_token" in tokens: - log.debug("retrieved access token") - - # Tokens retrieved, remove auth codes as they are single use only. - cloudbackup.configuration.flow = None - cloudbackup.configuration.authcode = None - cloudbackup.configuration.authurl = None - - # save tokens - save_tokencache(config=cloudbackup.configuration, cache=cache.serialize()) - result["message"] = """Zugangsberechtigung erfolgreich abgerufen.""" - result["MessageType"] = MessageType.SUCCESS - return result - - else: - result["message"] = """"Es konnten keine Tokens abgerufen werden: - %s
%s""" % (tokens.get("error"), tokens.get("error_description")) - result["MessageType"] = MessageType.WARNING - '''pub_user_message(payload, connection_id, - "Es konnten keine Tokens abgerufen werden: %s
%s" - % (result.get("error"), result.get("error_description")), MessageType.WARNING - ) - ''' - return result diff --git a/packages/modules/backup_clouds/onedrive/backup_cloud.py b/packages/modules/backup_clouds/onedrive/backup_cloud.py deleted file mode 100644 index 8f2a4d5f96..0000000000 --- a/packages/modules/backup_clouds/onedrive/backup_cloud.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python3 -import logging -import os -import pathlib - -from modules.backup_clouds.onedrive.msdrive.onedrive import OneDrive -from modules.backup_clouds.onedrive.api import get_tokens -from modules.backup_clouds.onedrive.config import OneDriveBackupCloud, OneDriveBackupCloudConfiguration -from modules.common.abstract_device import DeviceDescriptor -from modules.common.configurable_backup_cloud import ConfigurableBackupCloud - - -log = logging.getLogger(__name__) - - -def upload_backup(config: OneDriveBackupCloudConfiguration, backup_filename: str, backup_file: bytes) -> None: - # upload a single file to onedrive useing credentials from OneDriveBackupCloudConfiguration - # https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_put_content?view=odsp-graph-online - tokens = get_tokens(config) # type: ignore - log.debug("token object retrieved, access_token: %s", tokens.__len__) - log.debug("instantiate OneDrive connection") - onedrive = OneDrive(access_token=tokens["access_token"]) - - localbackup = os.path.join(pathlib.Path().resolve(), 'data', 'backup', backup_filename) - remote_filename = backup_filename.replace(':', '-') # file won't upload when name contains ':' - - if not config.backuppath.endswith("/"): - log.debug("fixing missing ending slash in backuppath: " + config.backuppath) - config.backuppath = config.backuppath + "/" - - log.debug("uploading file %s to OneDrive", backup_filename) - onedrive.upload_item(item_path=(config.backuppath+remote_filename), file_path=localbackup, - conflict_behavior="replace") - - -def create_backup_cloud(config: OneDriveBackupCloud): - def updater(backup_filename: str, backup_file: bytes): - upload_backup(config.configuration, backup_filename, backup_file) - return ConfigurableBackupCloud(config=config, component_updater=updater) - - -device_descriptor = DeviceDescriptor(configuration_factory=OneDriveBackupCloud) diff --git a/packages/modules/backup_clouds/onedrive/config.py b/packages/modules/backup_clouds/onedrive/config.py deleted file mode 100644 index c221cafe34..0000000000 --- a/packages/modules/backup_clouds/onedrive/config.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import Optional - - -class OneDriveBackupCloudConfiguration: - def __init__(self, backuppath: str = "/openWB/Backup/", - persistent_tokencache: Optional[str] = None, - authurl: Optional[str] = None, - authcode: Optional[str] = None, - scope: Optional[list] = ["https://graph.microsoft.com/Files.ReadWrite"], - authority: Optional[str] = "https://login.microsoftonline.com/consumers/", - clientID: Optional[str] = "e529d8d2-3b0f-4ae4-b2ba-2d9a2bba55b2", - flow: Optional[str] = None) -> None: - self.backuppath = backuppath - self.persistent_tokencache = persistent_tokencache - self.authurl = authurl - self.authcode = authcode - self.scope = scope - self.authority = authority - self.clientID = clientID - self.flow = flow - - -class OneDriveBackupCloud: - def __init__(self, - name: str = "OneDrive", - type: str = "onedrive", - configuration: OneDriveBackupCloudConfiguration = None) -> None: - self.name = name - self.type = type - self.configuration = configuration or OneDriveBackupCloudConfiguration() diff --git a/packages/modules/backup_clouds/onedrive/msdrive/constants.py b/packages/modules/backup_clouds/onedrive/msdrive/constants.py deleted file mode 100644 index 16bace4960..0000000000 --- a/packages/modules/backup_clouds/onedrive/msdrive/constants.py +++ /dev/null @@ -1,3 +0,0 @@ -BASE_GRAPH_URL = "https://graph.microsoft.com/v1.0" -SIMPLE_UPLOAD_MAX_SIZE = 4000000 # 4MB -CHUNK_UPLOAD_MAX_SIZE = 3276800 # ~3MB must be divisible by 327680 bytes diff --git a/packages/modules/backup_clouds/onedrive/msdrive/drive.py b/packages/modules/backup_clouds/onedrive/msdrive/drive.py deleted file mode 100644 index e2b8addf22..0000000000 --- a/packages/modules/backup_clouds/onedrive/msdrive/drive.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -from .exceptions import InvalidAccessToken, ItemNotFound, RateLimited, DriveException -from requests import Session -from abc import ABC, abstractmethod -from urllib3.util.retry import Retry -from requests.adapters import HTTPAdapter -from requests.exceptions import HTTPError -from .constants import SIMPLE_UPLOAD_MAX_SIZE, CHUNK_UPLOAD_MAX_SIZE - - -class MSDrive(ABC): - """Abstract class for accessing files stored in OneDrive and SharePoint using the Microsoft Graph API.""" - - def __init__(self, access_token: str) -> None: - """Class constructor that accepts a Microsoft access token for use with the API - - Args: - access_token (str): The access token - """ - self.access_token = access_token - - def get_item_data(self, **kwargs) -> dict: - """Get metadata for a DriveItem. - - Args: - drive_id (str): The drive ID (only for SharePoint) - item_id (str): [EITHER] The item ID - item_path (str): [EITHER] The item path - - Returns: - dict: JSON representation of a DriveItem resource - """ - r = self._session().get(self._get_drive_item_url(**kwargs)) - - return r.json() - - def list_items(self, **kwargs) -> dict: - """List the DriveItems in a specific folder path. - - Args: - drive_id (str): The drive ID (only for SharePoint) - folder_path (str): The folder path (or leave out for root) - - Returns: - dict: JSON representation of a collection of DriveItem resources - """ - r = self._session().get(self._get_drive_children_url(**kwargs)) - - return r.json() - - def download_item(self, **kwargs) -> None: - """Download a DriveItem file to a specific local path. - - Args: - drive_id (str): The drive ID (only for SharePoint) - item_id (str): [EITHER] The item ID - item_path (str): [EITHER] The item path - file_path (str): Local path to save the file to (e.g. /tmp/blah.csv) - """ - if not kwargs.get("file_path"): - raise ValueError("Missing file_path argument") - - data = self.get_item_data(**kwargs) - - with Session().get(data["@microsoft.graph.downloadUrl"], stream=True) as r: - r.raise_for_status() - - with open(kwargs["file_path"], "wb") as f: - for chunk in r.iter_content(chunk_size=8192): - f.write(chunk) - - def upload_item(self, **kwargs) -> None: - """Upload a local file to an existing or new DriveItem. - - Specify the item_path for a new file. - Specify the item_path or item_id for an existing file. - - Args: - drive_id (str): The drive ID (only for SharePoint) - item_id (str): [EITHER] The item ID - item_path (str): [EITHER] The item path - file_path (str): Local path to upload the file from (e.g. /tmp/blah.csv) - """ - if not kwargs.get("file_path"): - raise ValueError("Missing file_path argument") - - file_size = os.stat(kwargs["file_path"]).st_size - - if file_size <= SIMPLE_UPLOAD_MAX_SIZE: - self._upload_item_small(**kwargs) - else: - self._upload_item_large(**kwargs) - - @abstractmethod - def _get_drive_item_url(self, **kwargs) -> str: - raise NotImplementedError("Must be overridden") - - @abstractmethod - def _get_drive_children_url(self, **kwargs) -> str: - raise NotImplementedError("Must be overridden") - - def _session(self) -> Session: - s = Session() - s.hooks["response"] = [self.raise_error_hook] - s.headers.update({"Authorization": "Bearer " + self.access_token}) - - return s - - def _session_upload(self) -> Session: - retries = Retry( - total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504] - ) - - adapter = HTTPAdapter(max_retries=retries) - - s = Session() - s.mount("http://", adapter) - s.mount("https://", adapter) - s.hooks["response"] = [self.raise_error_hook] - - return s - - def _upload_item_small(self, **kwargs) -> None: - url = self._get_drive_item_url(**kwargs) - file_data = open(kwargs["file_path"], "rb") - - if kwargs.get("item_id"): - url += "/content" - else: - url += ":/content" - - try: - self._session().put(url, data=file_data) - finally: - file_data.close() - - def _upload_item_large(self, **kwargs) -> None: - upload_url = self._get_upload_url(**kwargs) - file_size = os.stat(kwargs["file_path"]).st_size - - with open(kwargs["file_path"], "rb") as f: - chunk_size = CHUNK_UPLOAD_MAX_SIZE - chunk_number = file_size // chunk_size - chunk_leftover = file_size - chunk_size * chunk_number - chunk_data = f.read(chunk_size) - i = 0 - - while chunk_data: - start_index = i * chunk_size - end_index = start_index + chunk_size - - if i == chunk_number: - end_index = start_index + chunk_leftover - - s = self._session_upload() - - # Setting the header with the appropriate chunk data location in the file - headers = { - "Content-Length": str(chunk_size), - "Content-Range": "bytes {}-{}/{}".format( - start_index, end_index - 1, file_size - ), - } - - s.headers.update(headers) - s.put(upload_url, data=chunk_data) - - i = i + 1 - chunk_data = f.read(chunk_size) - - def _get_upload_url(self, **kwargs) -> str: - url = self._get_drive_item_url(**kwargs) - - if kwargs.get("item_id"): - url += "/createUploadSession" - else: - url += ":/createUploadSession" - - r = self._session().post(url) - - return r.json()["uploadUrl"] - - def raise_error_hook(self, resp, *args, **kwargs) -> None: - try: - resp.raise_for_status() - except HTTPError as err: - self._handle_http_error(err) - - def _handle_http_error(self, err: HTTPError) -> None: - if err.response is None: - raise err - - try: - body = err.response.json() - message = body["error"]["message"] - except Exception: - raise err - - if err.response.status_code == 401: - raise InvalidAccessToken(message) - - if err.response.status_code == 404: - raise ItemNotFound(message) - - if err.response.status_code == 429: - raise RateLimited(message) - - raise DriveException(message) diff --git a/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py b/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py deleted file mode 100644 index 8537d69d3d..0000000000 --- a/packages/modules/backup_clouds/onedrive/msdrive/exceptions.py +++ /dev/null @@ -1,14 +0,0 @@ -class DriveException(Exception): - """There was an ambiguous exception that occurred""" - - -class InvalidAccessToken(DriveException): - """Invalid access token""" - - -class ItemNotFound(DriveException): - """Item not found""" - - -class RateLimited(DriveException): - """Rate limit exceeded""" diff --git a/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py b/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py deleted file mode 100644 index ff75a980c5..0000000000 --- a/packages/modules/backup_clouds/onedrive/msdrive/onedrive.py +++ /dev/null @@ -1,30 +0,0 @@ -from .drive import MSDrive -from urllib.parse import quote -from .constants import BASE_GRAPH_URL - - -class OneDrive(MSDrive): - """Class for accessing DriveItems stored in OneDrive. - - A DriveItem resource represents a file, folder, or other item stored in a drive. - - All file system objects in OneDrive are returned as DriveItem resources (see https://bit.ly/3HAAxrh). - - """ - - def _get_drive_item_url(self, **kwargs) -> str: - if kwargs.get("item_id"): - return f"{BASE_GRAPH_URL}/me/drive/items/{kwargs['item_id']}" - - if kwargs.get("item_path"): - path = quote(kwargs["item_path"].lstrip("/")) - return f"{BASE_GRAPH_URL}/me/drive/root:/{path}" - - raise ValueError("Missing argument: item_id or item_path") - - def _get_drive_children_url(self, **kwargs) -> str: - if not kwargs.get("folder_path"): - return f"{BASE_GRAPH_URL}/me/drive/root/children" - else: - path = quote(kwargs["folder_path"].lstrip("/").rstrip("/")) - return f"{BASE_GRAPH_URL}/me/drive/root:/{path}:/children" diff --git a/requirements.txt b/requirements.txt index ccc649f713..2e658cfa68 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,5 +13,4 @@ pkce==1.0.3 # skodaconnect==1.3.4 evdev==1.5.0 #telnetlib3==2.0.2 -msal==1.22.0 python-dateutil==2.8.2 From fb4632588cb0308703cb7a59ecc30a5b48e98fc8 Mon Sep 17 00:00:00 2001 From: okaegi Date: Sun, 6 Aug 2023 12:54:26 +0200 Subject: [PATCH 038/121] abb b23 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der ABB B23 Zähler wird nun auch als separate Leistungsmesser unterstützt. Allerdings nur über Lan. Dieser PR ist für 1.9 und 2.0. Das Gui für 2.0 kommt noch separat. --- packages/smarthome/smartbase.py | 4 +++- packages/smarthome/smartmeas.py | 23 ++++++++++++++++++++++- runs/mqttsub.py | 2 +- web/settings/smarthomeconfig.php | 8 +++++--- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/packages/smarthome/smartbase.py b/packages/smarthome/smartbase.py index cde68e4a24..e4db03f8ec 100644 --- a/packages/smarthome/smartbase.py +++ b/packages/smarthome/smartbase.py @@ -5,7 +5,7 @@ from smarthome.smartbase0 import Sbase0 from smarthome.smartmeas import Slsdm630, Sllovato, Slsdm120, Slwe514, Slfronius from smarthome.smartmeas import Sljson, Slsmaem, Slshelly, Sltasmota, Slmqtt -from smarthome.smartmeas import Slhttp, Slavm, Slmystrom +from smarthome.smartmeas import Slhttp, Slavm, Slmystrom, Slb23 from smarthome.smartbut import Sbshelly from datetime import datetime, timezone import logging @@ -458,6 +458,8 @@ def updatepar(self, input_param: Dict[str, str]) -> None: self._mydevicemeasure = Slsdm630() elif (self._device_measuretype == 'lovato'): self._mydevicemeasure = Sllovato() + elif (self._device_measuretype == 'b23'): + self._mydevicemeasure = Slb23() elif (self._device_measuretype == 'sdm120'): self._mydevicemeasure = Slsdm120() elif (self._device_measuretype == 'we514'): diff --git a/packages/smarthome/smartmeas.py b/packages/smarthome/smartmeas.py index 444d06e8a0..da571ea2c9 100644 --- a/packages/smarthome/smartmeas.py +++ b/packages/smarthome/smartmeas.py @@ -1,7 +1,7 @@ from smarthome.smartbase0 import Sbase0 from typing import Dict, Tuple from modules.common import modbus -from modules.common import sdm +from modules.common import sdm, b23 from modules.common import lovato import logging log = logging.getLogger(__name__) @@ -461,6 +461,27 @@ def sepwattread(self) -> Tuple[int, int]: return self.newwatt, self.newwattk +class Slb23(Slbase): + def __init__(self) -> None: + # setting + super().__init__() + + def sepwattread(self) -> Tuple[int, int]: + try: + # neu aus openwb 2.0 + with modbus.ModbusTcpClient_(self._device_measureip, self._device_measureportsdm) as tcp_client: + b23inst = b23.B23(self._device_measureid, tcp_client) + # log.warning(" b23inst id %s " % ( str(id(b23inst)))) + _, newwatt = b23inst.get_power() + self.newwatt = int(newwatt) + self.newwattk = int(b23inst.get_imported()) + except Exception as e1: + log.warning("Leistungsmessung %s %d %s Fehlermeldung: %s " + % ('b23 ', self.device_nummer, + str(self._device_measureip), str(e1))) + return self.newwatt, self.newwattk + + class Slsdm630(Slbase): def __init__(self) -> None: # setting diff --git a/runs/mqttsub.py b/runs/mqttsub.py index d44865ea9c..7e6506ed37 100755 --- a/runs/mqttsub.py +++ b/runs/mqttsub.py @@ -156,7 +156,7 @@ def map_run(message: str, device_number: int, option: str): "stiebel", "http", "avm", "mystrom", "viessmann", "mqtt", "NXDACXX", "ratiotherm" )), "device_measureType": create_topic_handler( - equals_one_of_validator("shelly", "tasmota", "http", "mystrom", "sdm630", "lovato", "we514", "fronius", + equals_one_of_validator("shelly", "tasmota", "http", "mystrom", "sdm630", "lovato", "we514", "fronius", "b23", "json", "avm", "mqtt", "sdm120", "smaem")), "device_temperatur_configured": create_topic_handler(int_range_validator(0, 3)), "device_einschaltschwelle": create_topic_handler(int_range_validator(-100000, 100000)), diff --git a/web/settings/smarthomeconfig.php b/web/settings/smarthomeconfig.php index 56f51a07af..21e77c502e 100644 --- a/web/settings/smarthomeconfig.php +++ b/web/settings/smarthomeconfig.php @@ -850,6 +850,7 @@ + @@ -861,7 +862,7 @@
-
+
@@ -915,13 +916,13 @@
-
+
-
+
@@ -929,6 +930,7 @@ Standardeinstellungen verschiedener Geräte:
SDM630/Lovato: 8899
Elgris: 502 + b23: ???
From a595a7fe285a5ad033cb761447b029739a7a30dc Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 7 Aug 2023 12:01:59 +0200 Subject: [PATCH 039/121] fix number of new phases in case of auto phase switch --- packages/control/algorithm/algorithm.py | 3 ++- packages/control/auto_phase_switch_test.py | 2 +- packages/control/chargepoint/chargepoint.py | 8 ++++---- packages/control/ev.py | 14 +++++++------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/control/algorithm/algorithm.py b/packages/control/algorithm/algorithm.py index cbf21e75fd..08de281913 100644 --- a/packages/control/algorithm/algorithm.py +++ b/packages/control/algorithm/algorithm.py @@ -65,7 +65,8 @@ def _check_auto_phase_switch_delay(self) -> None: cp.num, cp.data.get.currents, cp.data.get.power, - cp.template.data.max_current_single_phase) + cp.template.data.max_current_single_phase, + cp.get_max_phase_hw()) if message is not None: cp.data.get.state_str = message # Nachdem im Automatikmodus die Anzahl Phasen bekannt ist, Einhaltung des Maximalstroms diff --git a/packages/control/auto_phase_switch_test.py b/packages/control/auto_phase_switch_test.py index 211f0fd8bd..a3ed86f35f 100644 --- a/packages/control/auto_phase_switch_test.py +++ b/packages/control/auto_phase_switch_test.py @@ -139,7 +139,7 @@ def test_auto_phase_switch(monkeypatch, vehicle: Ev, params: Params): vehicle.data.control_parameter.state = params.state # execution - phases_to_use, current, message = vehicle.auto_phase_switch(0, params.get_currents, params.get_power, 32) + phases_to_use, current, message = vehicle.auto_phase_switch(0, params.get_currents, params.get_power, 32, 3) # evaluation assert phases_to_use == params.expected_phases_to_use diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index e99e6d8c0a..9a0ce7717f 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -549,9 +549,9 @@ def initiate_phase_switch(self): else: # Wenn eine Umschaltung im Gange ist, muss erst gewartet werden, bis diese fertig ist. if self.data.set.phases_to_use == 1: - message = "Umschaltung von 3 auf 1 Phase." + message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase." else: - message = "Umschaltung von 1 auf 3 Phasen." + message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen." self.set_state_and_log(message) return if charging_ev.data.control_parameter.state == ChargepointState.WAIT_FOR_USING_PHASES: @@ -580,12 +580,12 @@ def initiate_phase_switch(self): "control_parameter phases " + str(charging_ev.data.control_parameter.phases)) if charging_ev.data.control_parameter.phases == 1: - message = "Umschaltung von 3 auf 1 Phase." + message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase." # Ladeleistung reservieren, da während der Umschaltung die Ladung pausiert wird. evu_counter.data.set.reserved_surplus += charging_ev. \ ev_template.data.max_current_single_phase * 230 else: - message = "Umschaltung von 1 auf 3 Phasen." + message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen." # Ladeleistung reservieren, da während der Umschaltung die Ladung pausiert wird. evu_counter.data.set.reserved_surplus += charging_ev. \ ev_template.data.max_current_single_phase * 3 * 230 diff --git a/packages/control/ev.py b/packages/control/ev.py index f21a61ef4c..f65e930ac7 100644 --- a/packages/control/ev.py +++ b/packages/control/ev.py @@ -498,14 +498,14 @@ def auto_phase_switch(self, cp_num: int, get_currents: List[float], get_power: float, - max_current_cp: int) -> Tuple[int, float, Optional[str]]: + max_current_cp: int, + max_phases: int) -> Tuple[int, float, Optional[str]]: message = None current = self.data.control_parameter.required_current timestamp_auto_phase_switch = self.data.control_parameter.timestamp_auto_phase_switch phases_to_use = self.data.control_parameter.phases phases_in_use = self.data.control_parameter.phases pv_config = data.data.general_data.data.chargemode_config.pv_charging - max_phases_ev = self.ev_template.data.max_phases if self.charge_template.data.chargemode.pv_charging.feed_in_limit: feed_in_yield = pv_config.feed_in_yield else: @@ -515,16 +515,16 @@ def auto_phase_switch(self, all_surplus = (evu_counter.calc_surplus() - evu_counter.data.set.released_surplus + evu_counter.data.set.reserved_surplus - feed_in_yield) if phases_in_use == 1: - direction_str = "Umschaltverzögerung von 1 auf 3" + direction_str = f"Umschaltverzögerung von 1 auf {max_phases}" delay = pv_config.phase_switch_delay * 60 required_power = (self.ev_template.data.max_current_single_phase * 230 - - self.ev_template.data.min_current * max_phases_ev * 230) - new_phase = 3 + self.ev_template.data.min_current * max_phases * 230) + new_phase = max_phases new_current = self.ev_template.data.min_current else: - direction_str = "Umschaltverzögerung von 3 auf 1" + direction_str = f"Umschaltverzögerung von {max_phases} auf 1" delay = (16 - pv_config.phase_switch_delay) * 60 - required_power = (self.ev_template.data.min_current * max_phases_ev * 230 - + required_power = (self.ev_template.data.min_current * max_phases * 230 - self.ev_template.data.max_current_single_phase * 230) new_phase = 1 new_current = self.ev_template.data.max_current_single_phase From 978424a090c1f1524952a7bf870ab2b30a84aead Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 7 Aug 2023 13:45:13 +0200 Subject: [PATCH 040/121] naming sma --- packages/modules/devices/sma_sunny_boy/config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/modules/devices/sma_sunny_boy/config.py b/packages/modules/devices/sma_sunny_boy/config.py index a684b5003a..971072aab7 100644 --- a/packages/modules/devices/sma_sunny_boy/config.py +++ b/packages/modules/devices/sma_sunny_boy/config.py @@ -11,7 +11,7 @@ def __init__(self, ip_address: Optional[str] = None): class SmaSunnyBoy: def __init__(self, - name: str = "SMA Sunny Boy", + name: str = "SMA Sunny Boy/Tripower", type: str = "sma_sunny_boy", id: int = 0, configuration: SmaSunnyBoyConfiguration = None) -> None: @@ -28,7 +28,7 @@ def __init__(self): class SmaSunnyBoyBatSetup(ComponentSetup[SmaSunnyBoyBatConfiguration]): def __init__(self, - name: str = "Sma Sunny Boy Speicher", + name: str = "Sma Sunny Boy/Tripower Speicher", type: str = "bat", id: int = 0, configuration: SmaSunnyBoyBatConfiguration = None) -> None: @@ -56,7 +56,7 @@ def __init__(self): class SmaSunnyBoyCounterSetup(ComponentSetup[SmaSunnyBoyCounterConfiguration]): def __init__(self, - name: str = "Sma Sunny Boy Zähler", + name: str = "Sma Sunny Boy/Tripower Zähler", type: str = "counter", id: int = 0, configuration: SmaSunnyBoyCounterConfiguration = None) -> None: From 8ec76d309b2d5ef93059b809b6afefc8a4c0afed Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 7 Aug 2023 15:19:11 +0200 Subject: [PATCH 041/121] configurable port for sungrow --- modules/bezug_sungrow/main.sh | 2 +- modules/speicher_sungrow/main.sh | 2 +- modules/wr_sungrow/main.sh | 2 +- packages/modules/devices/sungrow/config.py | 3 ++- packages/modules/devices/sungrow/device.py | 9 ++++++--- web/settings/modulconfigpv.php | 7 +++++++ 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/modules/bezug_sungrow/main.sh b/modules/bezug_sungrow/main.sh index 9ee22c106f..0cc7451991 100755 --- a/modules/bezug_sungrow/main.sh +++ b/modules/bezug_sungrow/main.sh @@ -13,7 +13,7 @@ fi if [[ "$pvwattmodul" == "wr_sungrow" ]]; then echo "value read at pv modul" >/dev/null else - bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "counter" "$speicher1_ip" "$sungrowspeicherid" "$sungrowsr" >>"$MYLOGFILE" 2>&1 + bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "counter" "$speicher1_ip" "$sungrowspeicherport" "$sungrowspeicherid" "$sungrowsr" >>"$MYLOGFILE" 2>&1 ret=$? fi diff --git a/modules/speicher_sungrow/main.sh b/modules/speicher_sungrow/main.sh index a9a634c350..e73f14ff34 100755 --- a/modules/speicher_sungrow/main.sh +++ b/modules/speicher_sungrow/main.sh @@ -10,7 +10,7 @@ else MYLOGFILE="$RAMDISKDIR/bat.log" fi -bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "bat" "$speicher1_ip" "$sungrowspeicherid" >>"$MYLOGFILE" 2>&1 +bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "bat" "$speicher1_ip" "$sungrowspeicherport" "$sungrowspeicherid" >>"$MYLOGFILE" 2>&1 ret=$? openwbDebugLog $DMOD 2 "BAT RET: $ret" diff --git a/modules/wr_sungrow/main.sh b/modules/wr_sungrow/main.sh index 17df513c13..597f84fffb 100755 --- a/modules/wr_sungrow/main.sh +++ b/modules/wr_sungrow/main.sh @@ -15,6 +15,6 @@ if [[ "$wattbezugmodul" == "bezug_sungrow" ]]; then else read_counter=0 fi -bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "inverter" "$speicher1_ip" "$sungrowspeicherid" "1" "$read_counter" "$sungrowsr" >>"$MYLOGFILE" 2>&1 +bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.sungrow.device" "inverter" "$speicher1_ip" "$sungrowspeicherport" "$sungrowspeicherid" "1" "$read_counter" "$sungrowsr" >>"$MYLOGFILE" 2>&1 cat "$RAMDISKDIR/pvwatt" diff --git a/packages/modules/devices/sungrow/config.py b/packages/modules/devices/sungrow/config.py index fd2268c0e5..2fb6a668cd 100644 --- a/packages/modules/devices/sungrow/config.py +++ b/packages/modules/devices/sungrow/config.py @@ -4,8 +4,9 @@ class SungrowConfiguration: - def __init__(self, ip_address: Optional[str] = None, modbus_id: int = 1): + def __init__(self, ip_address: Optional[str] = None, port: int = 502, modbus_id: int = 1): self.ip_address = ip_address + self.port = port self.modbus_id = modbus_id diff --git a/packages/modules/devices/sungrow/device.py b/packages/modules/devices/sungrow/device.py index fbc2089ea3..f00c00d5de 100644 --- a/packages/modules/devices/sungrow/device.py +++ b/packages/modules/devices/sungrow/device.py @@ -31,7 +31,8 @@ def __init__(self, device_config: Union[Dict, Sungrow]) -> None: try: self.device_config = dataclass_from_dict(Sungrow, device_config) ip_address = self.device_config.configuration.ip_address - self.client = modbus.ModbusTcpClient_(ip_address, 502) + port = self.device_config.configuration.port + self.client = modbus.ModbusTcpClient_(ip_address, port) except Exception: log.exception("Fehler im Modul " + self.device_config.name) @@ -82,11 +83,12 @@ def update(self) -> None: def read_legacy(ip_address: str, + port: int, modbus_id: int, component_config: dict): device_config = Sungrow() device_config.configuration.ip_address = ip_address - device_config.configuration.port = 502 + device_config.configuration.port = port device_config.configuration.modbus_id = modbus_id dev = Device(device_config) dev.add_component(component_config) @@ -103,13 +105,14 @@ def read_legacy_counter(ip_address: str, modbus_id: int, version: int): def read_legacy_inverter(ip_address: str, + port: int, modbus_id: int, num: int, read_counter: int, version: int): device_config = Sungrow() device_config.configuration.ip_address = ip_address - device_config.configuration.port = 502 + device_config.configuration.port = port device_config.configuration.modbus_id = modbus_id dev = Device(device_config) dev.add_component(inverter.component_descriptor.configuration_factory(id=num)) diff --git a/web/settings/modulconfigpv.php b/web/settings/modulconfigpv.php index 584af45520..08e369234e 100644 --- a/web/settings/modulconfigpv.php +++ b/web/settings/modulconfigpv.php @@ -202,6 +202,13 @@
+
+ +
+ + Hier kann ein abweichender Netzwerk-Port angegeben werden, auf dem die Modbus/TCP Verbindung aufgebaut wird.Standard ist 502. +
+
From 110397eab29a7ce4823ccd61180886048268e7f0 Mon Sep 17 00:00:00 2001 From: okaegi <72255431+okaegi@users.noreply.github.com> Date: Tue, 8 Aug 2023 10:01:18 +0200 Subject: [PATCH 042/121] Speicher wird in Smarthome nicht mehr korrekt erkannt (#1080) * Speicher wird in Smarthome nicht mehr korrekt erkannt Unter openwb 2.0 wurde die Speicherleistung und der Speichersoc nicht mehr korrekt erkannt. * flake8... --- packages/smarthome/smarthome.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/smarthome/smarthome.py b/packages/smarthome/smarthome.py index 3346a3dfbb..faa36f5e0b 100644 --- a/packages/smarthome/smarthome.py +++ b/packages/smarthome/smarthome.py @@ -29,17 +29,15 @@ def smarthome_handler() -> None: def handler() -> None: try: try: - if len(SubData.bat_data) > 1: - speicherleistung = int(SubData.bat_all_data.data.get.power) - speichersoc = int(SubData.bat_all_data.data.get.soc) - else: - speicherleistung = 0 - speichersoc = 100 + speicherleistung = int(SubData.bat_all_data.data.get.power) except Exception: - log.exception("Fehler beim Auslesen der Ramdisk " + - "(speichervorhanden,speicherleistung,speichersoc): ") + log.exception("Fehler beim Auslesen der Ramdisk (Speicherleistung)") speicherleistung = 0 - speichersoc = 100 + try: + speichersoc = int(SubData.bat_all_data.data.get.soc) + except Exception: + log.exception("Fehler beim Auslesen der Ramdisk (Speichersoc)") + speichersoc = 0 watt = SubData.counter_data[f"counter{SubData.counter_all_data.get_id_evu_counter()}"].data.get.power * -1 wattint = int(watt) pvwatt = int(SubData.pv_all_data.data.get.power) * -1 From ed9772e3c1cd5604dc10c394d57b6a80e65adb82 Mon Sep 17 00:00:00 2001 From: okaegi <72255431+okaegi@users.noreply.github.com> Date: Tue, 8 Aug 2023 10:02:02 +0200 Subject: [PATCH 043/121] idm .... (#2771) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * idm .... Aktuelle Leistung wird nun bei jedem Durchlauf gelesen. Pv Leistung wird nun immer geschrieben (egal ob Gerät on oder off ist) Variablen zentral initialisiert * flake8 --- packages/modules/smarthome/idm/watt.py | 54 ++++++++++++++------------ 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/packages/modules/smarthome/idm/watt.py b/packages/modules/smarthome/idm/watt.py index 52004b5302..5f72c153e2 100644 --- a/packages/modules/smarthome/idm/watt.py +++ b/packages/modules/smarthome/idm/watt.py @@ -37,12 +37,28 @@ count5 = 0 with open(file_stringcount5, 'w') as f: f.write(str(count5)) +# aktuelle Leistung lesen +client = ModbusTcpClient(ipadr, port=502) +# test +# start = 3501 +# navvers = "2" +# prod +start = 4122 +if navvers == "2": + rr = client.read_input_registers(start, 2, unit=1) +else: + rr = client.read_holding_registers(start, 2, unit=1) +raw = struct.pack('>HH', rr.getRegister(1), rr.getRegister(0)) +lkw = float(struct.unpack('>f', raw)[0]) +aktpower = int(lkw*1000) +modbuswrite = 0 +neupower = 0 +# pv modus +pvmodus = 0 +if os.path.isfile(file_stringpv): + with open(file_stringpv, 'r') as f: + pvmodus = int(f.read()) if count5 == 0: - # pv modus - pvmodus = 0 - if os.path.isfile(file_stringpv): - with open(file_stringpv, 'r') as f: - pvmodus = int(f.read()) # log counter count1 = 999 if os.path.isfile(file_stringcount): @@ -53,22 +69,7 @@ count1 = 0 with open(file_stringcount, 'w') as f: f.write(str(count1)) - # aktuelle Leistung lesen - client = ModbusTcpClient(ipadr, port=502) - # test - # start = 3501 - # navvers = "2" - # prod - start = 4122 - if navvers == "2": - rr = client.read_input_registers(start, 2, unit=1) - else: - rr = client.read_holding_registers(start, 2, unit=1) - raw = struct.pack('>HH', rr.getRegister(1), rr.getRegister(0)) - lkw = float(struct.unpack('>f', raw)[0]) - aktpower = int(lkw*1000) # logik nur schicken bei pvmodus - modbuswrite = 0 if pvmodus == 1: modbuswrite = 1 # Nur positiven Uberschuss schicken, nicht aktuelle Leistung @@ -101,10 +102,6 @@ pvwnew = builder.to_registers() # json return power = aktuelle Leistungsaufnahme in Watt, # on = 1 pvmodus, powerc = counter in kwh - answer = '{"power":' + str(aktpower) + ',"powerc":0' - answer += ',"send":' + str(modbuswrite) + ',"sendpower":' + str(neupower) - answer += ',"on":' + str(pvmodus) + '}' - writeret(answer, devicenumber) if count1 < 3: log.info(" %d ipadr %s ueberschuss %6d Akt Leistung %6d Pv %6d" % (devicenumber, ipadr, uberschuss, aktpower, pvwatt)) @@ -113,7 +110,14 @@ # modbus write if modbuswrite == 1: client.write_registers(74, regnew, unit=1) - client.write_registers(78, pvwnew, unit=1) if count1 < 3: log.info("devicenr %d ipadr %s device written by modbus " % (devicenumber, ipadr)) + client.write_registers(78, pvwnew, unit=1) +else: + if pvmodus == 99: + pvmodus = 0 +answer = '{"power":' + str(aktpower) + ',"powerc":0' +answer += ',"send":' + str(modbuswrite) + ',"sendpower":' + str(neupower) +answer += ',"on":' + str(pvmodus) + '}' +writeret(answer, devicenumber) From 5fc2776da9da0f9f9c490b1934447e3e63ae01be Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 8 Aug 2023 10:08:49 +0200 Subject: [PATCH 044/121] avoid warnings --- data/config/boot_config.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/config/boot_config.txt b/data/config/boot_config.txt index 647ce044d7..81c7be7d7c 100644 --- a/data/config/boot_config.txt +++ b/data/config/boot_config.txt @@ -1,5 +1,5 @@ # openwb - begin -# openwb-version:2 +# openwb-version:3 # Do not edit this section! We need begin/end and version for proper updates! [all] gpio=4,5,7,11,17,22,23,24,25,26,27=op,dl @@ -8,4 +8,5 @@ gpio=6,8,9,10,12,13,16,21=ip,pu # this also requires to disable Bluetooth dtoverlay=disable-bt enable_uart=1 +avoid_warnings=1 # openwb - end From 64ba8bb427e234d286f5ad92c747fb50bfb2fd27 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 8 Aug 2023 10:11:10 +0200 Subject: [PATCH 045/121] catch pip errors --- packages/helpermodules/messaging.py | 10 +++--- packages/helpermodules/update_config.py | 41 +++++++++++++------------ runs/atreboot.sh | 10 ++++-- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/packages/helpermodules/messaging.py b/packages/helpermodules/messaging.py index c731bdd601..61aac12296 100644 --- a/packages/helpermodules/messaging.py +++ b/packages/helpermodules/messaging.py @@ -28,7 +28,7 @@ def pub_user_message(payload: dict, connection_id: str, message: str, def pub_system_message(payload: dict, message: str, message_type: MessageType = MessageType.INFO) -> None: - """ sendet eine Meldung an den Benutzer + """ sendet eine Meldung an alle Benutzer """ _pub_message(payload, None, message, message_type, MessageTarget.SYSTEM) @@ -57,11 +57,11 @@ def _pub_message(payload: dict, connection_id: Optional[str], message: str, log.warning('Benutzerbenachrichtigung ohne \'connection_id\'') Pub().pub(topic, message_payload) if message_type == MessageType.ERROR: - log.error(f'Befehl konnte nicht ausgeführt werden: {message_payload}') + log.error(f'Messaging: Fehlermeldung: {message_payload}') else: - log.debug(f'Befehl erfolgreich ausgeführt: {message}') + log.debug(f'Messaging: Meldung: {message}') except Exception: - log.exception("Fehler im Command-Modul") + log.exception("Fehler im Messaging-Modul") def pub_error_global(payload: dict, connection_id: str, error_str: str) -> None: @@ -76,4 +76,4 @@ def pub_error_global(payload: dict, connection_id: str, error_str: str) -> None: Pub().pub(f'openWB/set/command/{connection_id}/error', error_payload) log.error(f'Befehl konnte nicht ausgeführt werden: {error_payload}') except Exception: - log.exception("Fehler im Command-Modul") + log.exception("Fehler im Messaging-Modul") diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index db47aab82d..bb19be3575 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -318,37 +318,38 @@ class UpdateConfig: "^openWB/LegacySmartHome/Devices/[0-9]+/OnCntStandby$", "^openWB/LegacySmartHome/Devices/[1-2]+/TemperatureSensor[0-2]$", - "^openWB/system/boot_done$", + "^openWB/system/available_branches", "^openWB/system/backup_cloud/config$", - "^openWB/system/dataprotection_acknowledged$", - "^openWB/system/usage_terms_acknowledged$", - "^openWB/system/debug_level$", - "^openWB/system/lastlivevaluesJson$", - "^openWB/system/ip_address$", - "^openWB/system/version$", - "^openWB/system/release_train$", - "^openWB/system/update_in_progress$", - "^openWB/system/device/[0-9]+/config$", - "^openWB/system/device/[0-9]+/component/[0-9]+/config$", - "^openWB/system/device/[0-9]+/component/[0-9]+/simulation$", - "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/timestamp_present$", - "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/power_present$", - "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/present_imported$", - "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/present_exported$", - "^openWB/system/device/module_update_completed$", + "^openWB/system/boot_done$", "^openWB/system/configurable/backup_clouds$", "^openWB/system/configurable/chargepoints$", "^openWB/system/configurable/chargepoints_internal$", "^openWB/system/configurable/devices_components$", "^openWB/system/configurable/display_themes$", "^openWB/system/configurable/soc_modules$", - "^openWB/system/mqtt/bridge/[0-9]+$", "^openWB/system/current_branch", - "^openWB/system/current_commit", - "^openWB/system/available_branches", "^openWB/system/current_branch_commit", + "^openWB/system/current_commit", "^openWB/system/current_missing_commits", + "^openWB/system/dataprotection_acknowledged$", "^openWB/system/datastore_version" + "^openWB/system/debug_level$", + "^openWB/system/device/[0-9]+/component/[0-9]+/config$", + "^openWB/system/device/[0-9]+/component/[0-9]+/simulation$", + "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/power_present$", + "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/present_exported$", + "^openWB/system/device/[0-9]+/component/[0-9]+/simulation/present_imported$", + "^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/ip_address$", + "^openWB/system/lastlivevaluesJson$", + "^openWB/system/messages/[0-9]+$", + "^openWB/system/mqtt/bridge/[0-9]+$", + "^openWB/system/release_train$", + "^openWB/system/update_in_progress$", + "^openWB/system/usage_terms_acknowledged$", + "^openWB/system/version$", ] default_topic = ( ("openWB/chargepoint/get/power", 0), diff --git a/runs/atreboot.sh b/runs/atreboot.sh index 190133e2fb..a1bd1c7056 100755 --- a/runs/atreboot.sh +++ b/runs/atreboot.sh @@ -297,8 +297,14 @@ chmod 666 "$LOGFILE" # check for python dependencies echo "install required python packages with 'pip3'..." - pip3 install -r "${OPENWBBASEDIR}/requirements.txt" - echo "done" + if pip3 install -r "${OPENWBBASEDIR}/requirements.txt"; then + echo "done" + else + echo "failed!" + message="Bei der Installation der benötigten Python-Bibliotheken ist ein Fehler aufgetreten! Bitte die Logdateien prüfen." + payload=$(printf '{"source": "system", "type": "danger", "message": "%s", "timestamp": %d}' "$message" "$(date +"%s")") + mosquitto_pub -p 1886 -t "openWB/system/messages/$(date +"%s%3N")" -r -m "$payload" + fi # collect some hardware info "${OPENWBBASEDIR}/runs/uuid.sh" From 48b7b77eb523fae17d6b9ba2e01238efde1c655e Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Tue, 8 Aug 2023 10:38:42 +0200 Subject: [PATCH 046/121] Kostal Piko Old for software2 (#2773) * Kostal Piko Old for software2 * wr2 --- modules/wr2_kostalpikovar2/main.sh | 2 +- modules/wr_kostalpikovar2/kostal_piko_var2.py | 50 -------------- .../kostal_piko_var2_test.py | 35 ---------- modules/wr_kostalpikovar2/main.sh | 2 +- .../devices/kostal_piko_old/__init__.py | 0 .../modules/devices/kostal_piko_old/config.py | 40 ++++++++++++ .../modules/devices/kostal_piko_old/device.py | 65 +++++++++++++++++++ .../devices/kostal_piko_old/inverter.py | 48 ++++++++++++++ .../devices/kostal_piko_old/inverter_test.py | 28 ++++++++ .../devices/kostal_piko_old/sample.html | 0 .../devices/kostal_piko_old/sample_off.html | 0 11 files changed, 183 insertions(+), 87 deletions(-) delete mode 100755 modules/wr_kostalpikovar2/kostal_piko_var2.py delete mode 100755 modules/wr_kostalpikovar2/kostal_piko_var2_test.py create mode 100644 packages/modules/devices/kostal_piko_old/__init__.py create mode 100644 packages/modules/devices/kostal_piko_old/config.py create mode 100644 packages/modules/devices/kostal_piko_old/device.py create mode 100644 packages/modules/devices/kostal_piko_old/inverter.py create mode 100644 packages/modules/devices/kostal_piko_old/inverter_test.py rename modules/wr_kostalpikovar2/kostal_piko_var2_test_sample.html => packages/modules/devices/kostal_piko_old/sample.html (100%) rename modules/wr_kostalpikovar2/kostal_piko_var2_test_sample_off.html => packages/modules/devices/kostal_piko_old/sample_off.html (100%) diff --git a/modules/wr2_kostalpikovar2/main.sh b/modules/wr2_kostalpikovar2/main.sh index efec1d9f5a..dc22182f7f 100755 --- a/modules/wr2_kostalpikovar2/main.sh +++ b/modules/wr2_kostalpikovar2/main.sh @@ -21,7 +21,7 @@ openwbDebugLog ${DMOD} 2 "WR User: ${wr2_piko2_user}" openwbDebugLog ${DMOD} 2 "WR Passwort: ${wr2_piko2_pass}" openwbDebugLog ${DMOD} 2 "WR URL: ${wr2_piko2_url}" -bash "$OPENWBBASEDIR/packages/legacy_run.sh" "wr_kostalpikovar2.kostal_piko_var2" 2 "${wr2_piko2_url}" "${wr2_piko2_user}" "${wr2_piko2_pass}" >>"$MYLOGFILE" 2>&1 +bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.kostal_piko_old.device" "inverter" "${wr2_piko2_url}" "${wr2_piko2_user}" "${wr2_piko2_pass}" 2 >>"$MYLOGFILE" 2>&1 ret=$? openwbDebugLog ${DMOD} 2 "RET: ${ret}" diff --git a/modules/wr_kostalpikovar2/kostal_piko_var2.py b/modules/wr_kostalpikovar2/kostal_piko_var2.py deleted file mode 100755 index e1711152b2..0000000000 --- a/modules/wr_kostalpikovar2/kostal_piko_var2.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -import logging -import re -from typing import List - -import requests - -from helpermodules.cli import run_using_positional_cli_args -from modules.common.component_state import InverterState -from modules.common.store import get_inverter_value_store - -log = logging.getLogger("Kostal Piko Var2") - - -def parse_kostal_piko_var2_html(html: str): - # power may be a string "xxx" when the inverter is offline, so we cannot match as a number - # state is just for debugging currently known states: - # - Aus - # - Leerlauf - result = re.search( - r"aktuell\s*]*>\s*([^<]+).*" - r"Gesamtenergie\s*]*>\s*(\d+).*" - r"Status\s*]*>\s*([^<]+)", - html, - re.DOTALL - ) - if result is None: - raise Exception("Given HTML does not match the expected regular expression. Ignoring.") - log.debug("Inverter data: state=%s, power=%s, exported=%s" % (result.group(3), result.group(1), result.group(2))) - try: - power = -int(result.group(1)) - except ValueError: - log.info("Inverter power is not a number! Inverter may be offline. Setting power to 0 W.") - power = 0 - return InverterState( - exported=int(result.group(2)) * 1000, - power=power - ) - - -def update(num: int, wr_piko2_url: str, wr_piko2_user: str, wr_piko2_pass: str): - log.debug("Beginning update") - response = requests.get(wr_piko2_url, verify=False, auth=(wr_piko2_user, wr_piko2_pass), timeout=10) - response.raise_for_status() - get_inverter_value_store(num).set(parse_kostal_piko_var2_html(response.text)) - log.debug("Update completed successfully") - - -def main(argv: List[str]): - run_using_positional_cli_args(update, argv) diff --git a/modules/wr_kostalpikovar2/kostal_piko_var2_test.py b/modules/wr_kostalpikovar2/kostal_piko_var2_test.py deleted file mode 100755 index 0f570950c8..0000000000 --- a/modules/wr_kostalpikovar2/kostal_piko_var2_test.py +++ /dev/null @@ -1,35 +0,0 @@ -from pathlib import Path - -import pytest - -from kostal_piko_var2 import parse_kostal_piko_var2_html -from test_utils.mock_ramdisk import MockRamdisk - - -@pytest.fixture -def mock_ramdisk(monkeypatch): - return MockRamdisk(monkeypatch) - - -def test_parse_html(mock_ramdisk: MockRamdisk): - # setup - sample_html = (Path(__file__).parent / "kostal_piko_var2_test_sample.html").read_text() - - # execution - actual = parse_kostal_piko_var2_html(sample_html) - - # evaluation - assert actual.power == -50 - assert actual.exported == 73288000 - - -def test_parse_html_off(mock_ramdisk: MockRamdisk): - # setup - sample_html = (Path(__file__).parent / "kostal_piko_var2_test_sample_off.html").read_text() - - # execution - actual = parse_kostal_piko_var2_html(sample_html) - - # evaluation - assert actual.power == 0 - assert actual.exported == 42906000 diff --git a/modules/wr_kostalpikovar2/main.sh b/modules/wr_kostalpikovar2/main.sh index 962eafe914..04c2d9228d 100755 --- a/modules/wr_kostalpikovar2/main.sh +++ b/modules/wr_kostalpikovar2/main.sh @@ -21,7 +21,7 @@ openwbDebugLog ${DMOD} 2 "WR User: ${wr_piko2_user}" openwbDebugLog ${DMOD} 2 "WR Passwort: ${wr_piko2_pass}" openwbDebugLog ${DMOD} 2 "WR URL: ${wr_piko2_url}" -bash "$OPENWBBASEDIR/packages/legacy_run.sh" "wr_kostalpikovar2.kostal_piko_var2" 1 "${wr_piko2_url}" "${wr_piko2_user}" "${wr_piko2_pass}" >>"$MYLOGFILE" 2>&1 +bash "$OPENWBBASEDIR/packages/legacy_run.sh" "modules.devices.kostal_piko_old.device" "inverter" "${wr_piko2_url}" "${wr_piko2_user}" "${wr_piko2_pass}" 1 >>"$MYLOGFILE" 2>&1 ret=$? openwbDebugLog ${DMOD} 2 "RET: ${ret}" diff --git a/packages/modules/devices/kostal_piko_old/__init__.py b/packages/modules/devices/kostal_piko_old/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/modules/devices/kostal_piko_old/config.py b/packages/modules/devices/kostal_piko_old/config.py new file mode 100644 index 0000000000..103dfb7a1e --- /dev/null +++ b/packages/modules/devices/kostal_piko_old/config.py @@ -0,0 +1,40 @@ +from typing import Optional +from helpermodules.auto_str import auto_str +from modules.common.component_setup import ComponentSetup + + +@auto_str +class KostalPikoOldConfiguration: + def __init__(self, ip_address: Optional[str] = None, user: Optional[str] = None, password: Optional[str] = None): + self.ip_address = ip_address + self.user = user + self.password = password + + +@auto_str +class KostalPikoOld: + def __init__(self, + name: str = "Kostal Piko (alte Generation)", + type: str = "kostal_piko_old", + id: int = 0, + configuration: KostalPikoOldConfiguration = None) -> None: + self.name = name + self.type = type + self.id = id + self.configuration = configuration or KostalPikoOldConfiguration() + + +@auto_str +class KostalPikoOldInverterConfiguration: + def __init__(self): + pass + + +@auto_str +class KostalPikoOldInverterSetup(ComponentSetup[KostalPikoOldInverterConfiguration]): + def __init__(self, + name: str = "Kostal Piko (alte Generation) Wechselrichter", + type: str = "inverter", + id: int = 0, + configuration: KostalPikoOldInverterConfiguration = None) -> None: + super().__init__(name, type, id, configuration or KostalPikoOldInverterConfiguration()) diff --git a/packages/modules/devices/kostal_piko_old/device.py b/packages/modules/devices/kostal_piko_old/device.py new file mode 100644 index 0000000000..ca1e0c41ae --- /dev/null +++ b/packages/modules/devices/kostal_piko_old/device.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +import logging +from typing import Iterable, Optional, List + +from helpermodules.cli import run_using_positional_cli_args +from modules.common import req +from modules.common.abstract_device import DeviceDescriptor +from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater +from modules.devices.kostal_piko_old import inverter +from modules.devices.kostal_piko_old.config import KostalPikoOld, KostalPikoOldConfiguration, KostalPikoOldInverterSetup +from modules.devices.kostal_piko_old.inverter import KostalPikoOldInverter + +log = logging.getLogger(__name__) + + +def create_device(device_config: KostalPikoOld): + def create_inverter_component(component_config: KostalPikoOldInverterSetup): + return KostalPikoOldInverter(component_config) + + def update_components(components: Iterable[KostalPikoOldInverter]): + response = req.get_http_session().get(device_config.configuration.ip_address, verify=False, auth=( + device_config.configuration.user, device_config.configuration.password), timeout=5).text + for component in components: + component.update(response) + + return ConfigurableDevice( + device_config=device_config, + component_factory=ComponentFactoryByType( + inverter=create_inverter_component, + ), + component_updater=MultiComponentUpdater(update_components) + ) + + +COMPONENT_TYPE_TO_MODULE = { + "inverter": inverter +} + + +def read_legacy(component_type: str, ip_address: str, user: str, password: str, num: Optional[int]) -> None: + device_config = KostalPikoOld( + configuration=KostalPikoOldConfiguration(ip_address=ip_address, user=user, password=password)) + dev = create_device(device_config) + if component_type in COMPONENT_TYPE_TO_MODULE: + component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory() + else: + raise Exception( + "illegal component type " + component_type + ". Allowed values: " + + ','.join(COMPONENT_TYPE_TO_MODULE.keys()) + ) + component_config.id = num + dev.add_component(component_config) + + log.debug('KostalPikoOld IP-Adresse: ' + ip_address) + log.debug('KostalPikoOld user: ' + user) + log.debug('KostalPikoOld Passwort: ' + password) + + dev.update() + + +def main(argv: List[str]): + run_using_positional_cli_args(read_legacy, argv) + + +device_descriptor = DeviceDescriptor(configuration_factory=KostalPikoOld) diff --git a/packages/modules/devices/kostal_piko_old/inverter.py b/packages/modules/devices/kostal_piko_old/inverter.py new file mode 100644 index 0000000000..b504c7db59 --- /dev/null +++ b/packages/modules/devices/kostal_piko_old/inverter.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +import logging +import re + +from modules.common.component_state import InverterState +from modules.common.component_type import ComponentDescriptor +from modules.common.fault_state import ComponentInfo +from modules.common.store import get_inverter_value_store +from modules.devices.kostal_piko_old.config import KostalPikoOldInverterSetup + +log = logging.getLogger(__name__) + + +class KostalPikoOldInverter: + def __init__(self, component_config: KostalPikoOldInverterSetup) -> None: + self.component_config = component_config + self.store = get_inverter_value_store(self.component_config.id) + self.component_info = ComponentInfo.from_component_config(self.component_config) + + def update(self, response) -> None: + # power may be a string "xxx" when the inverter is offline, so we cannot match as a number + # state is just for debugging currently known states: + # - Aus + # - Leerlauf + result = re.search( + r"aktuell\s*]*>\s*([^<]+).*" + r"Gesamtenergie\s*]*>\s*(\d+).*" + r"Status\s*]*>\s*([^<]+)", + response, + re.DOTALL + ) + if result is None: + raise Exception("Given HTML does not match the expected regular expression. Ignoring.") + log.debug("Inverter data: state=%s, power=%s, exported=%s" % + (result.group(3), result.group(1), result.group(2))) + try: + power = -int(result.group(1)) + except ValueError: + log.info("Inverter power is not a number! Inverter may be offline. Setting power to 0 W.") + power = 0 + inverter_state = InverterState( + exported=int(result.group(2)) * 1000, + power=power + ) + self.store.set(inverter_state) + + +component_descriptor = ComponentDescriptor(configuration_factory=KostalPikoOldInverterSetup) diff --git a/packages/modules/devices/kostal_piko_old/inverter_test.py b/packages/modules/devices/kostal_piko_old/inverter_test.py new file mode 100644 index 0000000000..2c6c5deec8 --- /dev/null +++ b/packages/modules/devices/kostal_piko_old/inverter_test.py @@ -0,0 +1,28 @@ +from pathlib import Path +from unittest.mock import Mock + +import pytest +from modules.common.component_state import InverterState + +from modules.devices.kostal_piko_old import inverter +from modules.devices.kostal_piko_old.config import KostalPikoOldInverterSetup + + +@pytest.mark.parametrize("sample_file_name, expected_inverter_state", + [pytest.param("sample.html", InverterState(power=-50, exported=73288000), id="Inverter on"), + pytest.param("sample_off.html", InverterState( + power=0, exported=42906000), id="Inverter off")] + ) +def test_parse_html(sample_file_name, expected_inverter_state, monkeypatch): + # setup + sample = (Path(__file__).parent / sample_file_name).read_text() + mock_inverter_value_store = Mock() + monkeypatch.setattr(inverter, 'get_inverter_value_store', Mock(return_value=mock_inverter_value_store)) + inv = inverter.KostalPikoOldInverter(KostalPikoOldInverterSetup()) + + # execution + inv.update(sample) + + # evaluation + assert mock_inverter_value_store.set.call_count == 1 + assert vars(mock_inverter_value_store.set.call_args[0][0]) == vars(expected_inverter_state) diff --git a/modules/wr_kostalpikovar2/kostal_piko_var2_test_sample.html b/packages/modules/devices/kostal_piko_old/sample.html similarity index 100% rename from modules/wr_kostalpikovar2/kostal_piko_var2_test_sample.html rename to packages/modules/devices/kostal_piko_old/sample.html diff --git a/modules/wr_kostalpikovar2/kostal_piko_var2_test_sample_off.html b/packages/modules/devices/kostal_piko_old/sample_off.html similarity index 100% rename from modules/wr_kostalpikovar2/kostal_piko_var2_test_sample_off.html rename to packages/modules/devices/kostal_piko_old/sample_off.html From 8837873c9db1e58f554f7f7c57d842874b56bdc1 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 8 Aug 2023 11:59:29 +0200 Subject: [PATCH 047/121] fix duo rfid --- packages/control/chargepoint/chargepoint.py | 17 +++++--- .../control/chargepoint/chargepoint_test.py | 43 ++++++++++++++++++- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index e99e6d8c0a..7ff9dde58f 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -450,7 +450,7 @@ def prepare_cp(self) -> Tuple[int, Optional[str]]: message = message_ev if num != -1: if self.data.get.rfid is not None: - self.__link_rfid_to_cp() + self._link_rfid_to_cp() return num, message else: self.data.get.state_str = message @@ -701,18 +701,23 @@ def check_min_max_current(self, required_current: float, phases: int, pv: bool = self.set_state_and_log(msg) return required_current - def __link_rfid_to_cp(self) -> None: + def _link_rfid_to_cp(self) -> None: """ Wenn der Tag einem EV zugeordnet worden ist, wird der Tag unter set/rfid abgelegt und muss der Timer zurückgesetzt werden. """ rfid = self.data.get.rfid cp2_num = self.find_duo_partner() # Tag wird diesem LP der Duo zugewiesen oder es ist keine Duo - if not (cp2_num is not None and + if ((cp2_num is not None and self.data.get.rfid == data.data.cp_data[f"cp{cp2_num}"].data.get.rfid and - data.data.cp_data[f"cp{cp2_num}"].data.get.plug_state and - timecheck.get_difference(self.data.set.plug_time, - data.data.cp_data[f"cp{cp2_num}"].data.set.plug_time) < 0): + # EV am anderen Ladepunkt, am eigenen wurde zuerst angesteckt + ((data.data.cp_data[f"cp{cp2_num}"].data.get.plug_state and + timecheck.get_difference(self.data.set.plug_time, + data.data.cp_data[f"cp{cp2_num}"].data.set.plug_time) < 0) or + # kein EV am anderen Duo-Ladepunkt + data.data.cp_data[f"cp{cp2_num }"].data.get.plug_state is False)) or + # keine Duo + cp2_num is None): self.data.set.rfid = rfid Pub().pub("openWB/chargepoint/"+str(self.num)+"/set/rfid", rfid) self.chargepoint_module.clear_rfid() diff --git a/packages/control/chargepoint/chargepoint_test.py b/packages/control/chargepoint/chargepoint_test.py index 7fcc6ce8a1..a036798c61 100644 --- a/packages/control/chargepoint/chargepoint_test.py +++ b/packages/control/chargepoint/chargepoint_test.py @@ -1,6 +1,7 @@ -from typing import List +from typing import List, Optional from unittest.mock import Mock import pytest +from control import data from control.chargepoint.chargepoint import Chargepoint from control.chargepoint.chargepoint_template import CpTemplate @@ -49,3 +50,43 @@ def test_check_min_max_current(required_current, phases, expected_required_curre # assertion assert ret == expected_required_current + + +@pytest.fixture() +def mock_data() -> None: + data.data_init(Mock()) + data.data.cp_data["cp1"] = Chargepoint(1, None) + data.data.cp_data["cp1"].data.get.rfid = "1234" + + +@pytest.mark.parametrize("partner_id, cp1_plug_state, cp0_plug_time, cp1_plug_time, expected_set_rfid", + [ + pytest.param(None, False, None, None, "1234", id="no duo"), + pytest.param(1, False, None, None, "1234", id="second cp not plugged"), + pytest.param(1, True, "08/08/2023, 11:36:00", + "08/08/2023, 11:37:00", "1234", id="self first plugged"), + pytest.param(1, True, "08/08/2023, 11:37:00", + "08/08/2023, 11:36:00", None, id="second first plugged"), + ]) +def test_link_rfid_to_cp(partner_id: Optional[int], + cp1_plug_state: bool, + cp0_plug_time: Optional[str], + cp1_plug_time: Optional[str], + expected_set_rfid: Optional[str], + mock_data, + monkeypatch): + # setup + cp = Chargepoint(0, None) + cp.chargepoint_module = Mock() + cp.data.get.rfid = "1234" + cp.data.set.plug_time = cp0_plug_time + data.data.cp_data["cp1"].data.get.plug_state = cp1_plug_state + data.data.cp_data["cp1"].data.set.plug_time = cp1_plug_time + mock_find_duo_partner = Mock(return_value=partner_id) + monkeypatch.setattr(Chargepoint, "find_duo_partner", mock_find_duo_partner) + + # execution + cp._link_rfid_to_cp() + + # evaluation + assert cp.data.set.rfid == expected_set_rfid From d81a9a009454e8d27b9f47ecf8af984c383220e4 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 8 Aug 2023 12:30:59 +0200 Subject: [PATCH 048/121] add power factor to cp --- packages/modules/common/abstract_counter.py | 38 +++++++++++++++++ packages/modules/common/b23.py | 17 +++++--- packages/modules/common/component_state.py | 42 +++++++++---------- packages/modules/common/lovato.py | 3 +- packages/modules/common/mpm3pm.py | 3 +- packages/modules/common/sdm.py | 3 +- packages/modules/common/store/_chargepoint.py | 1 + .../chargepoint_module.py | 9 ++-- 8 files changed, 83 insertions(+), 33 deletions(-) create mode 100644 packages/modules/common/abstract_counter.py diff --git a/packages/modules/common/abstract_counter.py b/packages/modules/common/abstract_counter.py new file mode 100644 index 0000000000..b6b01ce247 --- /dev/null +++ b/packages/modules/common/abstract_counter.py @@ -0,0 +1,38 @@ +from abc import abstractmethod +from typing import List, Tuple + +from modules.common import modbus + + +class AbstractCounter: + @abstractmethod + def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None: + pass + + @abstractmethod + def get_currents(self) -> List[float]: + return [0]*3 + + @abstractmethod + def get_exported(self) -> float: + return 0 + + @abstractmethod + def get_frequency(self) -> float: + return 50 + + @abstractmethod + def get_imported(self) -> float: + return 0 + + @abstractmethod + def get_power(self) -> Tuple[List[float], float]: + return [0]*3, 0 + + @abstractmethod + def get_power_factors(self) -> List[float]: + return [0]*3 + + @abstractmethod + def get_voltages(self) -> List[float]: + return [230]*3 diff --git a/packages/modules/common/b23.py b/packages/modules/common/b23.py index f162a7dd1f..e10ae91187 100644 --- a/packages/modules/common/b23.py +++ b/packages/modules/common/b23.py @@ -2,28 +2,33 @@ from typing import List, Tuple from modules.common import modbus +from modules.common.abstract_counter import AbstractCounter from modules.common.modbus import ModbusDataType -class B23: +class B23(AbstractCounter): def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None: self.client = client self.id = modbus_id - def get_imported(self) -> float: - return self.client.read_holding_registers(0x5000, ModbusDataType.UINT_64, unit=self.id) * 10 + def get_currents(self) -> List[float]: + return [val / 100 for val in self.client.read_holding_registers( + 0x5B0C, [ModbusDataType.UINT_32]*3, unit=self.id)] def get_frequency(self) -> float: return self.client.read_holding_registers(0x5B2C, ModbusDataType.INT_16, unit=self.id) / 100 - def get_currents(self) -> List[float]: - return [val / 100 for val in self.client.read_holding_registers( - 0x5B0C, [ModbusDataType.UINT_32]*3, unit=self.id)] + def get_imported(self) -> float: + return self.client.read_holding_registers(0x5000, ModbusDataType.UINT_64, unit=self.id) * 10 def get_power(self) -> Tuple[List[float], float]: power = self.client.read_holding_registers(0x5B14, ModbusDataType.INT_32, unit=self.id) / 100 return [0]*3, power + def get_power_factors(self) -> List[float]: + return [val / 1000 for val in self.client.read_holding_registers( + 0x5B3B, [ModbusDataType.UINT_32]*3, unit=self.id)] + def get_voltages(self) -> List[float]: return [val / 10 for val in self.client.read_holding_registers( 0x5B00, [ModbusDataType.UINT_32]*3, unit=self.id)] diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py index 215ec9f26a..b765160b05 100644 --- a/packages/modules/common/component_state.py +++ b/packages/modules/common/component_state.py @@ -1,8 +1,25 @@ -from typing import List, Optional +from typing import List, Optional, Tuple from helpermodules.auto_str import auto_str +def _calculate_powers_and_currents(currents: Optional[List[float]], + powers: Optional[List[float]], + voltages: Optional[List[float]]) -> Tuple[List[float]]: + if voltages is None: + voltages = [230.0]*3 + if powers is None: + if currents is None: + powers = [0.0]*3 + else: + powers = [currents[i]*voltages[i] for i in range(0, 3)] + if currents is None and powers: + currents = [powers[i]/voltages[i] for i in range(0, 3)] + if currents and powers: + currents = [currents[i]*-1 if powers[i] < 0 and currents[i] > 0 else currents[i] for i in range(0, 3)] + return currents, powers, voltages + + @auto_str class BatState: def __init__( @@ -47,20 +64,7 @@ def __init__( power_factors: actual power factors for 3 phases frequency: actual grid frequency in Hz """ - if voltages is None: - voltages = [230.0]*3 - self.voltages = voltages - if powers is None: - if currents is None: - powers = [0.0]*3 - else: - powers = [currents[i]*voltages[i] for i in range(0, 3)] - self.powers = powers - if currents is None and powers: - currents = [powers[i]/voltages[i] for i in range(0, 3)] - if currents and powers: - currents = [currents[i]*-1 if powers[i] < 0 and currents[i] > 0 else currents[i] for i in range(0, 3)] - self.currents = currents + self.currents, self.powers, self.voltages = _calculate_powers_and_currents(currents, powers, voltages) if power_factors is None: power_factors = [0.0]*3 self.power_factors = power_factors @@ -115,18 +119,14 @@ def __init__(self, imported: float = 0, exported: float = 0, power: float = 0, + powers: Optional[List[float]] = None, voltages: Optional[List[float]] = None, currents: Optional[List[float]] = None, power_factors: Optional[List[float]] = None, charge_state: bool = False, plug_state: bool = False, rfid: Optional[str] = None): - if voltages is None: - voltages = [0.0]*3 - self.voltages = voltages - if currents is None: - currents = [0.0]*3 - self.currents = currents + self.currents, self.powers, self.voltages = _calculate_powers_and_currents(currents, powers, voltages) if power_factors is None: power_factors = [0.0]*3 self.power_factors = power_factors diff --git a/packages/modules/common/lovato.py b/packages/modules/common/lovato.py index 153b4dd906..504f37687d 100644 --- a/packages/modules/common/lovato.py +++ b/packages/modules/common/lovato.py @@ -2,10 +2,11 @@ from modules.common import modbus from typing import List, Tuple +from modules.common.abstract_counter import AbstractCounter from modules.common.modbus import ModbusDataType -class Lovato: +class Lovato(AbstractCounter): def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None: self.client = client self.id = modbus_id diff --git a/packages/modules/common/mpm3pm.py b/packages/modules/common/mpm3pm.py index 56ea2b9074..13ff71b77a 100644 --- a/packages/modules/common/mpm3pm.py +++ b/packages/modules/common/mpm3pm.py @@ -2,10 +2,11 @@ from typing import List, Tuple from modules.common import modbus +from modules.common.abstract_counter import AbstractCounter from modules.common.modbus import ModbusDataType -class Mpm3pm: +class Mpm3pm(AbstractCounter): def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None: self.client = client self.id = modbus_id diff --git a/packages/modules/common/sdm.py b/packages/modules/common/sdm.py index 4512dc38c0..bdfef8f8eb 100644 --- a/packages/modules/common/sdm.py +++ b/packages/modules/common/sdm.py @@ -2,10 +2,11 @@ from typing import List, Tuple from modules.common import modbus +from modules.common.abstract_counter import AbstractCounter from modules.common.modbus import ModbusDataType -class Sdm: +class Sdm(AbstractCounter): def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None: self.client = client self.id = modbus_id diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py index 00a79dbff7..665a938930 100644 --- a/packages/modules/common/store/_chargepoint.py +++ b/packages/modules/common/store/_chargepoint.py @@ -31,6 +31,7 @@ def set(self, state: ChargepointState) -> None: pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/imported", state.imported, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/exported", state.exported, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/power", state.power, 2) + pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/powers", state.powers, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/phases_in_use", state.phases_in_use, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charge_state", state.charge_state, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/plug_state", state.plug_state, 2) diff --git a/packages/modules/internal_chargepoint_handler/chargepoint_module.py b/packages/modules/internal_chargepoint_handler/chargepoint_module.py index aea0a475f5..035c5f0a34 100644 --- a/packages/modules/internal_chargepoint_handler/chargepoint_module.py +++ b/packages/modules/internal_chargepoint_handler/chargepoint_module.py @@ -34,12 +34,14 @@ def set_current(self, current: float) -> None: def get_values(self, phase_switch_cp_active: bool) -> Tuple[ChargepointState, float]: try: - _, power = self.__client.meter_client.get_power() + powers, power = self.__client.meter_client.get_power() if power < self.PLUG_STANDBY_POWER_THRESHOLD: power = 0 voltages = self.__client.meter_client.get_voltages() currents = self.__client.meter_client.get_currents() imported = self.__client.meter_client.get_imported() + power_factors = self.__client.meter_client.get_power_factors() + frequency = self.__client.meter_client.get_frequency() phases_in_use = sum(1 for current in currents if current > 3) time.sleep(0.1) @@ -63,12 +65,13 @@ def get_values(self, phase_switch_cp_active: bool) -> Tuple[ChargepointState, fl currents=currents, imported=imported, exported=0, - # powers=powers, + powers=powers, voltages=voltages, - # frequency=frequency, + frequency=frequency, plug_state=plug_state, charge_state=charge_state, phases_in_use=phases_in_use, + power_factors=power_factors, rfid=rfid ) except Exception as e: From cd8f1e7ca40f155b1269d53673637c49c0e879d6 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 8 Aug 2023 12:40:02 +0200 Subject: [PATCH 049/121] fix --- packages/modules/common/component_state.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py index b765160b05..eb08b92ec3 100644 --- a/packages/modules/common/component_state.py +++ b/packages/modules/common/component_state.py @@ -125,11 +125,10 @@ def __init__(self, power_factors: Optional[List[float]] = None, charge_state: bool = False, plug_state: bool = False, - rfid: Optional[str] = None): + rfid: Optional[str] = None, + frequency: float = 50): self.currents, self.powers, self.voltages = _calculate_powers_and_currents(currents, powers, voltages) - if power_factors is None: - power_factors = [0.0]*3 - self.power_factors = power_factors + self.frequency = frequency self.imported = imported self.exported = exported self.power = power @@ -137,3 +136,6 @@ def __init__(self, self.charge_state = charge_state self.plug_state = plug_state self.rfid = rfid + if power_factors is None: + power_factors = [0.0]*3 + self.power_factors = power_factors From 374879ab2f31f8f64ddafa31b11fc485a4986786 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 8 Aug 2023 12:42:41 +0200 Subject: [PATCH 050/121] fix --- runs/isss.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runs/isss.py b/runs/isss.py index e56cb4d0c2..549ce7c6ed 100755 --- a/runs/isss.py +++ b/runs/isss.py @@ -84,7 +84,7 @@ def pub_value(topic: str, value): if self.parent_wb != "localhost": pub_single("openWB/lp/"+self.cp_num_str+"/"+topic, payload=str(value), hostname=self.parent_wb, no_json=True) - topic = self.MAP_KEY_TO_OLD_TOPIC[key] + topic = self.MAP_KEY_TO_OLD_TOPIC.get(key) rounding = get_rounding_function_by_digits(2) if topic is not None: if isinstance(topic, List): From e62228db58890297270589a36bf674d93a301eb5 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 8 Aug 2023 12:53:43 +0200 Subject: [PATCH 051/121] undo remove rct module --- loadvars.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/loadvars.sh b/loadvars.sh index 2eb1dd4d59..3ba4f54aec 100755 --- a/loadvars.sh +++ b/loadvars.sh @@ -1092,7 +1092,7 @@ loadvars(){ fi echo $hausverbrauch > /var/www/html/openWB/ramdisk/hausverbrauch usesimbezug=0 - if [[ $wattbezugmodul == "bezug_kostalplenticoreem300haus" ]] ; then + if [[ $wattbezugmodul == "bezug_rct" ]]|| [[ $wattbezugmodul == "bezug_kostalplenticoreem300haus" ]] ; then usesimbezug=1 fi if ((usesimbezug == 1)); then @@ -1134,7 +1134,7 @@ loadvars(){ if [[ $speichermodul == "speicher_kostalplenticore" ]] && [[ $pvwattmodul == "wr_plenticore" ]]; then usesimpv=1 fi - if [[ $pvwattmodul == "wr_kostalpikovar2" ]]; then + if [[ $pvwattmodul == "wr_rct" ]] || [[ $pvwattmodul == "wr_kostalpikovar2" ]] ; then usesimpv=1 fi if ((usesimpv == 1)); then @@ -1182,7 +1182,7 @@ loadvars(){ echo "$pvallwh" > /var/www/html/openWB/ramdisk/pvallwh fi - if [[ $speichermodul == "speicher_tesvoltsma" ]] || [[ $speichermodul == "speicher_kostalplenticore" ]] ; then + if [[ $speichermodul == "speicher_tesvoltsma" ]] || [[ $speichermodul == "speicher_rct" ]] || [[ $speichermodul == "speicher_kostalplenticore" ]] ; then ra='^-?[0-9]+$' watt2=$( Date: Tue, 8 Aug 2023 16:53:25 +0200 Subject: [PATCH 052/121] fix timeout soc --- packages/modules/update_soc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py index 0f3e4480d3..1798011e9d 100644 --- a/packages/modules/update_soc.py +++ b/packages/modules/update_soc.py @@ -28,7 +28,7 @@ def update(self) -> None: threads_update, threads_store = self._get_threads() with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): threads_update, threads_store = self._get_threads() - thread_handler(threads_update, data.data.general_data.data.control_interval/3) + thread_handler(threads_update, 300) with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): # threads_store = self._filter_failed_store_threads(threads_store) thread_handler(threads_store, data.data.general_data.data.control_interval/3) From 5dd2704cc281c9d896cf79535800a269e70d9515 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 9 Aug 2023 08:23:38 +0200 Subject: [PATCH 053/121] scheduler interval --- packages/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main.py b/packages/main.py index 9c3d6f6904..5845d041c9 100755 --- a/packages/main.py +++ b/packages/main.py @@ -140,7 +140,7 @@ def handler_random_nightly(self): def schedule_jobs(): [schedule.every().minute.at(f":{i:02d}").do(handler.handler10Sec).tag("algorithm") for i in range(0, 60, 10)] - [schedule.every().minute.at(f":{i:02d}").do(soc.update).tag("algorithm") for i in range(0, 60, 10)] + [schedule.every().minute.at(f":{i:02d}").do(soc.update).tag("algorithm") for i in range(0, 60, 5)] [schedule.every().minute.at(f":{i:02d}").do(smarthome_handler).tag("algorithm") for i in range(0, 60, 5)] [schedule.every().hour.at(f":{i:02d}").do(handler.handler5Min) for i in range(0, 60, 5)] [schedule.every().hour.at(f":{i:02d}").do(handler.handler5MinAlgorithm).tag("algorithm") for i in range(0, 60, 5)] From 61b3c96ea41f748475e6682782f2a8a5f452197b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 9 Aug 2023 10:29:40 +0200 Subject: [PATCH 054/121] fix --- packages/control/chargepoint/chargepoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index 7ff9dde58f..fff8b198b3 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -765,7 +765,7 @@ def find_duo_partner(self) -> Optional[int]: if self.data.config.type == "external_openwb" or self.data.config.type == "internal_openwb": for cp2 in data.data.cp_data.values(): if (cp2.num != self.num and - self.data.config.configuration.ip_address == cp2.data.config.configuration.ip_address): + self.data.config.configuration["ip_address"] == cp2.data.config.configuration["ip_address"]): return cp2.num return None except Exception: From 7133e8a5e42105f9373dc28856df932487abb49c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 9 Aug 2023 14:52:19 +0200 Subject: [PATCH 055/121] fix duo rfid --- packages/control/chargepoint/chargepoint.py | 32 +++++++++++-------- .../control/chargepoint/chargepoint_test.py | 4 +-- packages/control/prepare.py | 2 +- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index fff8b198b3..0f229ff73b 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -363,10 +363,6 @@ def _is_ev_plugged(self) -> Tuple[bool, Optional[str]]: if not state: message = "Keine Ladung, da kein Auto angesteckt ist." else: - if self.data.set.plug_time is None: - self.data.set.plug_time = timecheck.create_timestamp() - Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/plug_time", - self.data.set.plug_time) message = None return state, message @@ -431,9 +427,19 @@ def _process_charge_stop(self) -> None: self.data.set.energy_to_charge = 0 Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/energy_to_charge", 0) - def reset_values_at_start(self): + def setup_values_at_start(self): + self._reset_values_at_start() + self._set_values_at_start() + + def _reset_values_at_start(self): self.data.set.loadmanagement_available = True + def _set_values_at_start(self): + if self.data.get.plug_state and self.data.set.plug_time is None: + self.data.set.plug_time = timecheck.create_timestamp() + Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/plug_time", + self.data.set.plug_time) + def remember_previous_values(self): self.data.set.plug_state_prev = self.data.get.plug_state Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/plug_state_prev", self.data.set.plug_state_prev) @@ -445,12 +451,12 @@ def prepare_cp(self) -> Tuple[int, Optional[str]]: self.__validate_rfid() charging_possible, message = self.is_charging_possible() if charging_possible: - num, message_ev = self.template.get_ev(self.data.get.rfid or self.data.set.rfid, self.data.config.ev) + if self.data.get.rfid is not None: + self._link_rfid_to_cp() + num, message_ev = self.template.get_ev(self.data.set.rfid, self.data.config.ev) if message_ev: message = message_ev if num != -1: - if self.data.get.rfid is not None: - self._link_rfid_to_cp() return num, message else: self.data.get.state_str = message @@ -709,13 +715,12 @@ def _link_rfid_to_cp(self) -> None: cp2_num = self.find_duo_partner() # Tag wird diesem LP der Duo zugewiesen oder es ist keine Duo if ((cp2_num is not None and - self.data.get.rfid == data.data.cp_data[f"cp{cp2_num}"].data.get.rfid and # EV am anderen Ladepunkt, am eigenen wurde zuerst angesteckt ((data.data.cp_data[f"cp{cp2_num}"].data.get.plug_state and timecheck.get_difference(self.data.set.plug_time, - data.data.cp_data[f"cp{cp2_num}"].data.set.plug_time) < 0) or - # kein EV am anderen Duo-Ladepunkt - data.data.cp_data[f"cp{cp2_num }"].data.get.plug_state is False)) or + data.data.cp_data[f"cp{cp2_num}"].data.set.plug_time) > 0) or + # kein EV am anderen Duo-Ladepunkt + data.data.cp_data[f"cp{cp2_num }"].data.get.plug_state is False)) or # keine Duo cp2_num is None): self.data.set.rfid = rfid @@ -765,7 +770,8 @@ def find_duo_partner(self) -> Optional[int]: if self.data.config.type == "external_openwb" or self.data.config.type == "internal_openwb": for cp2 in data.data.cp_data.values(): if (cp2.num != self.num and - self.data.config.configuration["ip_address"] == cp2.data.config.configuration["ip_address"]): + self.data.config.configuration["ip_address"] == cp2.data.config.configuration[ + "ip_address"]): return cp2.num return None except Exception: diff --git a/packages/control/chargepoint/chargepoint_test.py b/packages/control/chargepoint/chargepoint_test.py index a036798c61..05fd00dd0f 100644 --- a/packages/control/chargepoint/chargepoint_test.py +++ b/packages/control/chargepoint/chargepoint_test.py @@ -64,9 +64,9 @@ def mock_data() -> None: pytest.param(None, False, None, None, "1234", id="no duo"), pytest.param(1, False, None, None, "1234", id="second cp not plugged"), pytest.param(1, True, "08/08/2023, 11:36:00", - "08/08/2023, 11:37:00", "1234", id="self first plugged"), + "08/08/2023, 11:37:00", None, id="self first plugged"), pytest.param(1, True, "08/08/2023, 11:37:00", - "08/08/2023, 11:36:00", None, id="second first plugged"), + "08/08/2023, 11:36:00", "1234", id="second first plugged"), ]) def test_link_rfid_to_cp(partner_id: Optional[int], cp1_plug_state: bool, diff --git a/packages/control/prepare.py b/packages/control/prepare.py index a5f02f185e..e08a51bee1 100644 --- a/packages/control/prepare.py +++ b/packages/control/prepare.py @@ -20,7 +20,7 @@ def setup_algorithm(self) -> None: try: data.data.general_data.check_ripple_control_receiver() for cp in data.data.cp_data.values(): - cp.reset_values_at_start() + cp.setup_values_at_start() data.data.bat_all_data.setup_bat() levels = data.data.counter_all_data.get_list_of_elements_per_level() for level in reversed(levels): From 677d52d674a3fb97bfc6eeebafb292c76f2275b8 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 9 Aug 2023 15:39:15 +0200 Subject: [PATCH 056/121] improve text --- packages/control/chargepoint/chargepoint.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index 9a0ce7717f..f8d80ebe78 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -510,6 +510,8 @@ def _is_phase_switch_required(self, charging_ev: Ev) -> bool: return True return False + STOP_CHARGING = ", dafür wird die Ladung unterbrochen." + def initiate_phase_switch(self): """prüft, ob eine Phasenumschaltung erforderlich ist und führt diese durch. """ @@ -549,9 +551,9 @@ def initiate_phase_switch(self): else: # Wenn eine Umschaltung im Gange ist, muss erst gewartet werden, bis diese fertig ist. if self.data.set.phases_to_use == 1: - message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase." + message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase{self.STOP_CHARGING}" else: - message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen." + message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen{self.STOP_CHARGING}" self.set_state_and_log(message) return if charging_ev.data.control_parameter.state == ChargepointState.WAIT_FOR_USING_PHASES: @@ -580,12 +582,12 @@ def initiate_phase_switch(self): "control_parameter phases " + str(charging_ev.data.control_parameter.phases)) if charging_ev.data.control_parameter.phases == 1: - message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase." + message = f"Umschaltung von {self.get_max_phase_hw()} auf 1 Phase{self.STOP_CHARGING}" # Ladeleistung reservieren, da während der Umschaltung die Ladung pausiert wird. evu_counter.data.set.reserved_surplus += charging_ev. \ ev_template.data.max_current_single_phase * 230 else: - message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen." + message = f"Umschaltung von 1 auf {self.get_max_phase_hw()} Phasen{self.STOP_CHARGING}" # Ladeleistung reservieren, da während der Umschaltung die Ladung pausiert wird. evu_counter.data.set.reserved_surplus += charging_ev. \ ev_template.data.max_current_single_phase * 3 * 230 From 15c0bddaf9481a882f23e3461270a5133b7ed8ba Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 9 Aug 2023 16:07:40 +0200 Subject: [PATCH 057/121] build UI --- ...eLog-70fa4b12.js => ChargeLog-5f30bcb4.js} | 2 +- ...js => ChargePointInstallation-47aec5b8.js} | 2 +- .../{Chart-bf76fb9e.js => Chart-49b639b4.js} | 2 +- ...ig-e240cf70.js => CloudConfig-da9d6c5e.js} | 2 +- ...03e74cdc.js => DataManagement-8a02aa30.js} | 2 +- ...ig-7f3e104b.js => DebugConfig-ddbc648b.js} | 2 +- ...666.js => GeneralChargeConfig-ac29a689.js} | 2 +- ...-abdd6c9a.js => GeneralConfig-36423866.js} | 2 +- .../assets/HardwareInstallation-4752ed0c.js | 1 - .../assets/HardwareInstallation-7f988a97.js | 1 + ...452.js => InstantChargeConfig-05d4f732.js} | 2 +- ...-f8408734.js => LegalSettings-0aa17b31.js} | 2 +- ...d8.js => LoadManagementConfig-bbe234ca.js} | 2 +- ...2c20af.js => MqttBridgeConfig-152c967f.js} | 2 +- ...7bb0.js => OpenwbSortableList-db92c83c.js} | 2 +- ...7f4c.js => OptionalComponents-56f649f3.js} | 2 +- ...04e8c577.js => PVChargeConfig-233c1da7.js} | 2 +- ...5.js => ScheduledChargeConfig-3d69a67b.js} | 2 +- ...{Status-2f9e22dd.js => Status-5b447ae3.js} | 2 +- ...upport-007f9ec4.js => Support-6b29d3b0.js} | 2 +- ...{System-fff94d77.js => System-57179bf7.js} | 2 +- ...e-73fc83a0.js => TestingStore-06f9cd00.js} | 2 +- ...75b0c6.js => TimeChargeConfig-d8158fc9.js} | 2 +- ...-7ad05e57.js => VehicleConfig-64d2df77.js} | 2 +- ...d-99033254.js => backup_cloud-b6c73543.js} | 2 +- ...d-e2986e8e.js => backup_cloud-f9884751.js} | 2 +- web/settings/assets/bat-0365f283.js | 1 + .../{bat-374aadf3.js => bat-05d57853.js} | 2 +- .../{bat-1761bb8c.js => bat-0dc7df81.js} | 2 +- .../{bat-f915472c.js => bat-2c2c1739.js} | 2 +- .../{bat-fe54661f.js => bat-34292ed1.js} | 2 +- .../{bat-f0bba54b.js => bat-3a522162.js} | 2 +- .../{bat-dc75c3bc.js => bat-5027e2dc.js} | 2 +- .../{bat-d030cd24.js => bat-552bb794.js} | 2 +- .../{bat-d3c76890.js => bat-56e740de.js} | 2 +- .../{bat-57cb095c.js => bat-6a774d77.js} | 2 +- .../{bat-0735bfb3.js => bat-6c7e4549.js} | 2 +- .../{bat-41d251bc.js => bat-747ec82c.js} | 2 +- .../{bat-1edb0ead.js => bat-78371791.js} | 2 +- .../{bat-701b11a5.js => bat-7892c6ff.js} | 2 +- .../{bat-8594bebd.js => bat-862fe547.js} | 2 +- .../{bat-9ba92541.js => bat-8d465039.js} | 2 +- .../{bat-ad02ebbd.js => bat-8e5275f9.js} | 2 +- .../{bat-94ced6ef.js => bat-96b30c95.js} | 2 +- .../{bat-f89e85e8.js => bat-9c4cb66b.js} | 2 +- .../{bat-2cb7fcb7.js => bat-9cf99a8b.js} | 2 +- .../{bat-5a3aee6e.js => bat-9fa50fa7.js} | 2 +- .../{bat-e7a43b7b.js => bat-a812139b.js} | 2 +- web/settings/assets/bat-aed0365b.js | 1 - .../{bat-50d72e0f.js => bat-b860d161.js} | 2 +- .../{bat-9e87a8db.js => bat-b9b268e2.js} | 2 +- .../{bat-c9c9c592.js => bat-bd482ff6.js} | 2 +- .../{bat-86e9bc80.js => bat-c86a746f.js} | 2 +- .../{bat-f7664e62.js => bat-ce75f78c.js} | 2 +- .../{bat-aaa94877.js => bat-e83535a3.js} | 2 +- .../{bat-0f0a85bc.js => bat-e9bd65aa.js} | 2 +- .../{bat-974e5d23.js => bat-ec186c85.js} | 2 +- .../{bat-4f8ed3c9.js => bat-f32f983a.js} | 2 +- ...at_api-83f4eb5d.js => bat_api-2f620f71.js} | 2 +- ...bus-b77c2017.js => bat_modbus-1de28157.js} | 2 +- .../assets/bat_smart_energy-16962a36.js | 1 + .../assets/bat_smart_energy-4f701c67.js | 1 - ...nt-651f8f5f.js => chargePoint-04c96676.js} | 2 +- ...nt-c1796cd6.js => chargePoint-10dd26b7.js} | 2 +- ...nt-fe6ccb61.js => chargePoint-7389b890.js} | 2 +- ...nt-6a041309.js => chargePoint-83c5fa5d.js} | 2 +- ...nt-33a12343.js => chargePoint-84db1946.js} | 2 +- ...nt-a0a4acbf.js => chargePoint-dc724714.js} | 2 +- ...mands-0085051f.js => commands-022bb19a.js} | 2 +- ...ounter-333c1a6d.js => counter-02f588be.js} | 2 +- web/settings/assets/counter-058092d9.js | 1 + ...ounter-8003bfd1.js => counter-0a70ba4e.js} | 2 +- ...ounter-596d7121.js => counter-0b0f0c4e.js} | 2 +- ...ounter-be7ebe08.js => counter-15317c83.js} | 2 +- ...ounter-30000cd2.js => counter-1d0f3892.js} | 2 +- ...ounter-4514b956.js => counter-26ce225d.js} | 2 +- ...ounter-e44eee41.js => counter-2df223d5.js} | 2 +- ...ounter-bac10632.js => counter-347ba16d.js} | 2 +- ...ounter-88eb412e.js => counter-35296ab7.js} | 2 +- ...ounter-e9ec98c5.js => counter-4b4b6fcb.js} | 2 +- ...ounter-1dc0e174.js => counter-4bfdc2cd.js} | 2 +- ...ounter-2d2082cf.js => counter-5643a400.js} | 2 +- ...ounter-dc035a3e.js => counter-56fdc27e.js} | 2 +- ...ounter-1aee48a7.js => counter-746d0e2d.js} | 2 +- ...ounter-f3278b0c.js => counter-75067630.js} | 2 +- ...ounter-66249572.js => counter-7f35a959.js} | 2 +- ...ounter-836555cd.js => counter-81355be8.js} | 2 +- ...ounter-122dd37a.js => counter-8142b909.js} | 2 +- ...ounter-6d9b8554.js => counter-816bc001.js} | 2 +- ...ounter-fa32a0cf.js => counter-8e5b4e19.js} | 2 +- ...ounter-2daf569f.js => counter-9b94bf71.js} | 2 +- ...ounter-c8a6ec77.js => counter-9db02eb0.js} | 2 +- ...ounter-36353861.js => counter-9db9f949.js} | 2 +- ...ounter-96604727.js => counter-a17994d5.js} | 2 +- ...ounter-091a96b7.js => counter-b60b6e4a.js} | 2 +- ...ounter-373a1c10.js => counter-b9602155.js} | 2 +- ...ounter-74542c06.js => counter-ba947ca5.js} | 2 +- ...ounter-17e6f697.js => counter-c22cfbf7.js} | 2 +- ...ounter-d6b54631.js => counter-cc16dae8.js} | 2 +- ...ounter-5c24ebc7.js => counter-cd468b50.js} | 2 +- ...ounter-b5fad35e.js => counter-cef05356.js} | 2 +- web/settings/assets/counter-d019a50a.js | 1 - ...ounter-8fdb9d26.js => counter-d1b5bc9e.js} | 2 +- ...ounter-8741a800.js => counter-d3d1ea3f.js} | 2 +- ...ounter-87037b08.js => counter-db44398b.js} | 2 +- ...ounter-2d7380c9.js => counter-dc28491c.js} | 2 +- ...ounter-34bc9327.js => counter-dc4e356a.js} | 2 +- ...ounter-29ac2dbe.js => counter-ea469ce2.js} | 2 +- ...ounter-3aa24e62.js => counter-ee7b7fc2.js} | 2 +- ...ounter-27a9c2ee.js => counter-f1ea356e.js} | 2 +- ...ounter-e3b8a3fa.js => counter-f29aec2b.js} | 2 +- ...ounter-0dc562bb.js => counter-f9804b26.js} | 2 +- ..._s0-764584ba.js => counter_s0-55cbf638.js} | 2 +- ..._sm-ea82381f.js => counter_sm-b8d44e45.js} | 2 +- ...{device-38cd05bd.js => device-0afef9f8.js} | 2 +- ...{device-2677ebed.js => device-0d55c208.js} | 2 +- ...{device-5eae489e.js => device-0e74116d.js} | 2 +- ...{device-1ae9d038.js => device-0fcb1898.js} | 2 +- ...{device-8c005647.js => device-18559536.js} | 2 +- ...{device-bfe71246.js => device-198215c0.js} | 2 +- ...{device-27f1f947.js => device-1e5af3ea.js} | 2 +- ...{device-7eb7f018.js => device-1f86752d.js} | 2 +- ...{device-658cf7d5.js => device-2078311b.js} | 2 +- ...{device-f0ead4af.js => device-2120f8c0.js} | 2 +- ...{device-3d5e6b95.js => device-227fe008.js} | 2 +- ...{device-ae95c2d3.js => device-258d34d8.js} | 2 +- web/settings/assets/device-2c84b24e.js | 1 + web/settings/assets/device-368823e3.js | 1 - ...{device-cbdcd521.js => device-3875053c.js} | 2 +- ...{device-805a57b1.js => device-39d25848.js} | 2 +- web/settings/assets/device-3b02f789.js | 1 + ...{device-f7ed291a.js => device-43fe3974.js} | 2 +- ...{device-aba64669.js => device-47e73557.js} | 2 +- ...{device-c7f03dad.js => device-48b6056d.js} | 2 +- ...{device-774e8229.js => device-4a9aeedd.js} | 2 +- ...{device-97a184d3.js => device-4b441c71.js} | 2 +- ...{device-ed00b326.js => device-51726464.js} | 2 +- web/settings/assets/device-56b26147.js | 1 - ...{device-1da87f6d.js => device-5a0ee5e7.js} | 2 +- ...{device-8d3984b8.js => device-5ae4acfc.js} | 2 +- ...{device-99280bbf.js => device-61765b74.js} | 2 +- ...{device-d70aa0bc.js => device-6b61f10b.js} | 2 +- ...{device-d77016c1.js => device-6bc81270.js} | 2 +- ...{device-aa08fc7f.js => device-6f67126a.js} | 2 +- ...{device-217340a2.js => device-78972dd5.js} | 2 +- ...{device-9507155a.js => device-79231634.js} | 2 +- ...{device-e3c08fb4.js => device-7c1416ae.js} | 2 +- ...{device-e48058b2.js => device-81cfe576.js} | 2 +- ...{device-a55b29f8.js => device-84ee9f0e.js} | 2 +- ...{device-ee213d99.js => device-8ad58e8f.js} | 2 +- ...{device-b78ab975.js => device-a211281f.js} | 2 +- ...{device-b9e954eb.js => device-a276a5e8.js} | 2 +- ...{device-26d1cd71.js => device-a5d80d29.js} | 2 +- web/settings/assets/device-c06281fa.js | 1 + ...{device-163e7968.js => device-c1fd6c65.js} | 2 +- ...{device-fd68e523.js => device-c35af9f0.js} | 2 +- ...{device-7db846be.js => device-c492c79f.js} | 2 +- ...{device-cbc50bc1.js => device-c6d8e75d.js} | 2 +- ...{device-796f2679.js => device-c8f59f1c.js} | 2 +- ...{device-0ac32d64.js => device-cbfffa6e.js} | 2 +- ...{device-007ca4fb.js => device-d36a7958.js} | 2 +- ...{device-e4295529.js => device-d4c2290d.js} | 2 +- ...{device-b4c7f099.js => device-dbb2dc55.js} | 2 +- ...{device-81fa6cad.js => device-e04c8431.js} | 2 +- ...{device-e85a7920.js => device-e0c91363.js} | 2 +- ...{device-c7f8802d.js => device-e1c1fe17.js} | 2 +- ...{device-ff40d8e1.js => device-e7707776.js} | 2 +- ...{device-711c4142.js => device-edfb92e7.js} | 2 +- ...{device-d3af1afc.js => device-f0707a59.js} | 2 +- ...{device-4674babe.js => device-f915e9e1.js} | 2 +- ...{device-8eeabc14.js => device-fc73a673.js} | 2 +- ...e-65aaa96a.js => displayTheme-8212a288.js} | 2 +- ...cb871.js => external_inverter-114e7859.js} | 2 +- ...7b7e0.js => external_inverter-12a71401.js} | 2 +- ...2751a.js => external_inverter-266d661e.js} | 2 +- .../{index-b772b3e8.js => index-7f257223.js} | 2 +- ...erter-ef72abc7.js => inverter-012c416a.js} | 2 +- web/settings/assets/inverter-066b9c17.js | 1 + ...erter-3849924d.js => inverter-0748897a.js} | 2 +- ...erter-ac056d1d.js => inverter-127bad9a.js} | 2 +- ...erter-dfa572d8.js => inverter-141492ab.js} | 2 +- ...erter-a8d17a4e.js => inverter-142e36fb.js} | 2 +- ...erter-d4107377.js => inverter-1d15d663.js} | 2 +- ...erter-0f04bc4e.js => inverter-1e116570.js} | 2 +- ...erter-e440b330.js => inverter-1e818ed4.js} | 2 +- ...erter-6bf21593.js => inverter-1e83ea2a.js} | 2 +- ...erter-89f2126b.js => inverter-238294f2.js} | 2 +- ...erter-1bbefb9c.js => inverter-25c50f0a.js} | 2 +- ...erter-eee1527f.js => inverter-2cb1f91b.js} | 2 +- ...erter-36547adc.js => inverter-2cf514ef.js} | 2 +- ...erter-33d71d7c.js => inverter-3e75383d.js} | 2 +- ...erter-bc58fc73.js => inverter-40527e01.js} | 2 +- ...erter-fabd24ac.js => inverter-4355b01b.js} | 2 +- web/settings/assets/inverter-44c0f415.js | 1 + ...erter-5c832d19.js => inverter-4cef121f.js} | 2 +- ...erter-26fc0c4d.js => inverter-502f629e.js} | 2 +- ...erter-106f6b2a.js => inverter-5231c6c2.js} | 2 +- ...erter-a3407794.js => inverter-5378e193.js} | 2 +- ...erter-a15db0a0.js => inverter-5952b75a.js} | 2 +- ...erter-00a09c36.js => inverter-5cf7f4ea.js} | 2 +- ...erter-78f559db.js => inverter-766499df.js} | 2 +- ...erter-151fa9c5.js => inverter-7b30173d.js} | 2 +- ...erter-6f9c66d1.js => inverter-7ff062ac.js} | 2 +- ...erter-ab71cc4b.js => inverter-902f3710.js} | 2 +- ...erter-695b5c53.js => inverter-90f3d72b.js} | 2 +- web/settings/assets/inverter-9b9fe63d.js | 1 - ...erter-b84b910e.js => inverter-9f25c7b8.js} | 2 +- ...erter-d426b124.js => inverter-9fe0373f.js} | 2 +- ...erter-47ad48de.js => inverter-a2fbbf7f.js} | 2 +- ...erter-239362ff.js => inverter-a66f1636.js} | 2 +- ...erter-a6ddec85.js => inverter-b1fa892a.js} | 2 +- ...erter-3639b6ee.js => inverter-b4097339.js} | 2 +- ...erter-c3c11140.js => inverter-c1bf7cde.js} | 2 +- ...erter-832936bd.js => inverter-c21d2035.js} | 2 +- ...erter-0769e573.js => inverter-c53f4fbf.js} | 2 +- ...erter-67becac8.js => inverter-c87e2737.js} | 2 +- ...erter-e06fd605.js => inverter-cbe3f201.js} | 2 +- ...erter-23c62af1.js => inverter-e45e304e.js} | 2 +- ...erter-7c9d893d.js => inverter-e4d3cc40.js} | 2 +- ...erter-1bcb55bc.js => inverter-ebb193da.js} | 2 +- ...erter-b8fdf4a4.js => inverter-eff782b7.js} | 2 +- ...ehicle-d98ffef7.js => vehicle-20cc743a.js} | 2 +- ...ehicle-8923672d.js => vehicle-4b3522a6.js} | 2 +- ...ehicle-56b3de10.js => vehicle-4b98a311.js} | 2 +- ...ehicle-391df8d0.js => vehicle-50dd5eb2.js} | 2 +- ...ehicle-75667aad.js => vehicle-575fb854.js} | 2 +- ...ehicle-67509117.js => vehicle-6c139591.js} | 2 +- ...ehicle-4249fcff.js => vehicle-7cd93604.js} | 2 +- ...ehicle-df2230d5.js => vehicle-85f19442.js} | 2 +- ...ehicle-d1763e7a.js => vehicle-c5a65e75.js} | 2 +- ...ehicle-0b6d061a.js => vehicle-e146fe0e.js} | 2 +- ...ehicle-7df8b393.js => vehicle-e377a977.js} | 2 +- ...ehicle-a27fc177.js => vehicle-e76a744b.js} | 2 +- ...ehicle-b9c60ee5.js => vehicle-eb74ae86.js} | 2 +- web/settings/assets/vendor-59c39d33.js | 100 ------------------ web/settings/assets/vendor-6e5b23b4.js | 100 ++++++++++++++++++ ...s-1660eacd.js => vendor-axios-86f7a224.js} | 2 +- ...ba3518.js => vendor-bootstrap-6c75b4fa.js} | 2 +- ...4871098e.js => vendor-chartjs-5f622c20.js} | 2 +- ...6e75.js => vendor-fortawesome-396ff0d4.js} | 2 +- ...-7c356c02.js => vendor-jquery-921f231b.js} | 2 +- ...5b5ad.js => vendor-sortablejs-b3476726.js} | 2 +- web/settings/index.html | 14 +-- .../legacy_smart_home/smarthomeconfig.php | 8 +- 244 files changed, 343 insertions(+), 343 deletions(-) rename web/settings/assets/{ChargeLog-70fa4b12.js => ChargeLog-5f30bcb4.js} (96%) rename web/settings/assets/{ChargePointInstallation-91778edb.js => ChargePointInstallation-47aec5b8.js} (94%) rename web/settings/assets/{Chart-bf76fb9e.js => Chart-49b639b4.js} (98%) rename web/settings/assets/{CloudConfig-e240cf70.js => CloudConfig-da9d6c5e.js} (96%) rename web/settings/assets/{DataManagement-03e74cdc.js => DataManagement-8a02aa30.js} (96%) rename web/settings/assets/{DebugConfig-7f3e104b.js => DebugConfig-ddbc648b.js} (92%) rename web/settings/assets/{GeneralChargeConfig-ff9f0666.js => GeneralChargeConfig-ac29a689.js} (87%) rename web/settings/assets/{GeneralConfig-abdd6c9a.js => GeneralConfig-36423866.js} (97%) delete mode 100644 web/settings/assets/HardwareInstallation-4752ed0c.js create mode 100644 web/settings/assets/HardwareInstallation-7f988a97.js rename web/settings/assets/{InstantChargeConfig-3c9fe452.js => InstantChargeConfig-05d4f732.js} (84%) rename web/settings/assets/{LegalSettings-f8408734.js => LegalSettings-0aa17b31.js} (84%) rename web/settings/assets/{LoadManagementConfig-2faefad8.js => LoadManagementConfig-bbe234ca.js} (95%) rename web/settings/assets/{MqttBridgeConfig-dc2c20af.js => MqttBridgeConfig-152c967f.js} (95%) rename web/settings/assets/{OpenwbSortableList-7d137bb0.js => OpenwbSortableList-db92c83c.js} (96%) rename web/settings/assets/{OptionalComponents-6ef77f4c.js => OptionalComponents-56f649f3.js} (98%) rename web/settings/assets/{PVChargeConfig-04e8c577.js => PVChargeConfig-233c1da7.js} (98%) rename web/settings/assets/{ScheduledChargeConfig-f93a9bf5.js => ScheduledChargeConfig-3d69a67b.js} (85%) rename web/settings/assets/{Status-2f9e22dd.js => Status-5b447ae3.js} (98%) rename web/settings/assets/{Support-007f9ec4.js => Support-6b29d3b0.js} (94%) rename web/settings/assets/{System-fff94d77.js => System-57179bf7.js} (97%) rename web/settings/assets/{TestingStore-73fc83a0.js => TestingStore-06f9cd00.js} (95%) rename web/settings/assets/{TimeChargeConfig-8875b0c6.js => TimeChargeConfig-d8158fc9.js} (84%) rename web/settings/assets/{VehicleConfig-7ad05e57.js => VehicleConfig-64d2df77.js} (94%) rename web/settings/assets/{backup_cloud-99033254.js => backup_cloud-b6c73543.js} (96%) rename web/settings/assets/{backup_cloud-e2986e8e.js => backup_cloud-f9884751.js} (92%) create mode 100644 web/settings/assets/bat-0365f283.js rename web/settings/assets/{bat-374aadf3.js => bat-05d57853.js} (87%) rename web/settings/assets/{bat-1761bb8c.js => bat-0dc7df81.js} (85%) rename web/settings/assets/{bat-f915472c.js => bat-2c2c1739.js} (90%) rename web/settings/assets/{bat-fe54661f.js => bat-34292ed1.js} (86%) rename web/settings/assets/{bat-f0bba54b.js => bat-3a522162.js} (88%) rename web/settings/assets/{bat-dc75c3bc.js => bat-5027e2dc.js} (86%) rename web/settings/assets/{bat-d030cd24.js => bat-552bb794.js} (86%) rename web/settings/assets/{bat-d3c76890.js => bat-56e740de.js} (86%) rename web/settings/assets/{bat-57cb095c.js => bat-6a774d77.js} (90%) rename web/settings/assets/{bat-0735bfb3.js => bat-6c7e4549.js} (85%) rename web/settings/assets/{bat-41d251bc.js => bat-747ec82c.js} (86%) rename web/settings/assets/{bat-1edb0ead.js => bat-78371791.js} (85%) rename web/settings/assets/{bat-701b11a5.js => bat-7892c6ff.js} (86%) rename web/settings/assets/{bat-8594bebd.js => bat-862fe547.js} (93%) rename web/settings/assets/{bat-9ba92541.js => bat-8d465039.js} (85%) rename web/settings/assets/{bat-ad02ebbd.js => bat-8e5275f9.js} (93%) rename web/settings/assets/{bat-94ced6ef.js => bat-96b30c95.js} (86%) rename web/settings/assets/{bat-f89e85e8.js => bat-9c4cb66b.js} (86%) rename web/settings/assets/{bat-2cb7fcb7.js => bat-9cf99a8b.js} (86%) rename web/settings/assets/{bat-5a3aee6e.js => bat-9fa50fa7.js} (86%) rename web/settings/assets/{bat-e7a43b7b.js => bat-a812139b.js} (86%) delete mode 100644 web/settings/assets/bat-aed0365b.js rename web/settings/assets/{bat-50d72e0f.js => bat-b860d161.js} (88%) rename web/settings/assets/{bat-9e87a8db.js => bat-b9b268e2.js} (87%) rename web/settings/assets/{bat-c9c9c592.js => bat-bd482ff6.js} (87%) rename web/settings/assets/{bat-86e9bc80.js => bat-c86a746f.js} (86%) rename web/settings/assets/{bat-f7664e62.js => bat-ce75f78c.js} (94%) rename web/settings/assets/{bat-aaa94877.js => bat-e83535a3.js} (96%) rename web/settings/assets/{bat-0f0a85bc.js => bat-e9bd65aa.js} (86%) rename web/settings/assets/{bat-974e5d23.js => bat-ec186c85.js} (86%) rename web/settings/assets/{bat-4f8ed3c9.js => bat-f32f983a.js} (94%) rename web/settings/assets/{bat_api-83f4eb5d.js => bat_api-2f620f71.js} (86%) rename web/settings/assets/{bat_modbus-b77c2017.js => bat_modbus-1de28157.js} (86%) create mode 100644 web/settings/assets/bat_smart_energy-16962a36.js delete mode 100644 web/settings/assets/bat_smart_energy-4f701c67.js rename web/settings/assets/{chargePoint-651f8f5f.js => chargePoint-04c96676.js} (84%) rename web/settings/assets/{chargePoint-c1796cd6.js => chargePoint-10dd26b7.js} (98%) rename web/settings/assets/{chargePoint-fe6ccb61.js => chargePoint-7389b890.js} (95%) rename web/settings/assets/{chargePoint-6a041309.js => chargePoint-83c5fa5d.js} (92%) rename web/settings/assets/{chargePoint-33a12343.js => chargePoint-84db1946.js} (94%) rename web/settings/assets/{chargePoint-a0a4acbf.js => chargePoint-dc724714.js} (95%) rename web/settings/assets/{commands-0085051f.js => commands-022bb19a.js} (96%) rename web/settings/assets/{counter-333c1a6d.js => counter-02f588be.js} (87%) create mode 100644 web/settings/assets/counter-058092d9.js rename web/settings/assets/{counter-8003bfd1.js => counter-0a70ba4e.js} (86%) rename web/settings/assets/{counter-596d7121.js => counter-0b0f0c4e.js} (89%) rename web/settings/assets/{counter-be7ebe08.js => counter-15317c83.js} (86%) rename web/settings/assets/{counter-30000cd2.js => counter-1d0f3892.js} (86%) rename web/settings/assets/{counter-4514b956.js => counter-26ce225d.js} (90%) rename web/settings/assets/{counter-e44eee41.js => counter-2df223d5.js} (86%) rename web/settings/assets/{counter-bac10632.js => counter-347ba16d.js} (90%) rename web/settings/assets/{counter-88eb412e.js => counter-35296ab7.js} (87%) rename web/settings/assets/{counter-e9ec98c5.js => counter-4b4b6fcb.js} (89%) rename web/settings/assets/{counter-1dc0e174.js => counter-4bfdc2cd.js} (86%) rename web/settings/assets/{counter-2d2082cf.js => counter-5643a400.js} (91%) rename web/settings/assets/{counter-dc035a3e.js => counter-56fdc27e.js} (86%) rename web/settings/assets/{counter-1aee48a7.js => counter-746d0e2d.js} (93%) rename web/settings/assets/{counter-f3278b0c.js => counter-75067630.js} (88%) rename web/settings/assets/{counter-66249572.js => counter-7f35a959.js} (86%) rename web/settings/assets/{counter-836555cd.js => counter-81355be8.js} (86%) rename web/settings/assets/{counter-122dd37a.js => counter-8142b909.js} (86%) rename web/settings/assets/{counter-6d9b8554.js => counter-816bc001.js} (88%) rename web/settings/assets/{counter-fa32a0cf.js => counter-8e5b4e19.js} (86%) rename web/settings/assets/{counter-2daf569f.js => counter-9b94bf71.js} (96%) rename web/settings/assets/{counter-c8a6ec77.js => counter-9db02eb0.js} (96%) rename web/settings/assets/{counter-36353861.js => counter-9db9f949.js} (92%) rename web/settings/assets/{counter-96604727.js => counter-a17994d5.js} (90%) rename web/settings/assets/{counter-091a96b7.js => counter-b60b6e4a.js} (88%) rename web/settings/assets/{counter-373a1c10.js => counter-b9602155.js} (86%) rename web/settings/assets/{counter-74542c06.js => counter-ba947ca5.js} (86%) rename web/settings/assets/{counter-17e6f697.js => counter-c22cfbf7.js} (88%) rename web/settings/assets/{counter-d6b54631.js => counter-cc16dae8.js} (90%) rename web/settings/assets/{counter-5c24ebc7.js => counter-cd468b50.js} (86%) rename web/settings/assets/{counter-b5fad35e.js => counter-cef05356.js} (97%) delete mode 100644 web/settings/assets/counter-d019a50a.js rename web/settings/assets/{counter-8fdb9d26.js => counter-d1b5bc9e.js} (91%) rename web/settings/assets/{counter-8741a800.js => counter-d3d1ea3f.js} (85%) rename web/settings/assets/{counter-87037b08.js => counter-db44398b.js} (86%) rename web/settings/assets/{counter-2d7380c9.js => counter-dc28491c.js} (87%) rename web/settings/assets/{counter-34bc9327.js => counter-dc4e356a.js} (85%) rename web/settings/assets/{counter-29ac2dbe.js => counter-ea469ce2.js} (86%) rename web/settings/assets/{counter-3aa24e62.js => counter-ee7b7fc2.js} (85%) rename web/settings/assets/{counter-27a9c2ee.js => counter-f1ea356e.js} (90%) rename web/settings/assets/{counter-e3b8a3fa.js => counter-f29aec2b.js} (86%) rename web/settings/assets/{counter-0dc562bb.js => counter-f9804b26.js} (90%) rename web/settings/assets/{counter_s0-764584ba.js => counter_s0-55cbf638.js} (86%) rename web/settings/assets/{counter_sm-ea82381f.js => counter_sm-b8d44e45.js} (96%) rename web/settings/assets/{device-38cd05bd.js => device-0afef9f8.js} (89%) rename web/settings/assets/{device-2677ebed.js => device-0d55c208.js} (89%) rename web/settings/assets/{device-5eae489e.js => device-0e74116d.js} (90%) rename web/settings/assets/{device-1ae9d038.js => device-0fcb1898.js} (94%) rename web/settings/assets/{device-8c005647.js => device-18559536.js} (85%) rename web/settings/assets/{device-bfe71246.js => device-198215c0.js} (90%) rename web/settings/assets/{device-27f1f947.js => device-1e5af3ea.js} (87%) rename web/settings/assets/{device-7eb7f018.js => device-1f86752d.js} (87%) rename web/settings/assets/{device-658cf7d5.js => device-2078311b.js} (87%) rename web/settings/assets/{device-f0ead4af.js => device-2120f8c0.js} (87%) rename web/settings/assets/{device-3d5e6b95.js => device-227fe008.js} (88%) rename web/settings/assets/{device-ae95c2d3.js => device-258d34d8.js} (87%) create mode 100644 web/settings/assets/device-2c84b24e.js delete mode 100644 web/settings/assets/device-368823e3.js rename web/settings/assets/{device-cbdcd521.js => device-3875053c.js} (92%) rename web/settings/assets/{device-805a57b1.js => device-39d25848.js} (89%) create mode 100644 web/settings/assets/device-3b02f789.js rename web/settings/assets/{device-f7ed291a.js => device-43fe3974.js} (87%) rename web/settings/assets/{device-aba64669.js => device-47e73557.js} (89%) rename web/settings/assets/{device-c7f03dad.js => device-48b6056d.js} (90%) rename web/settings/assets/{device-774e8229.js => device-4a9aeedd.js} (87%) rename web/settings/assets/{device-97a184d3.js => device-4b441c71.js} (95%) rename web/settings/assets/{device-ed00b326.js => device-51726464.js} (89%) delete mode 100644 web/settings/assets/device-56b26147.js rename web/settings/assets/{device-1da87f6d.js => device-5a0ee5e7.js} (87%) rename web/settings/assets/{device-8d3984b8.js => device-5ae4acfc.js} (89%) rename web/settings/assets/{device-99280bbf.js => device-61765b74.js} (87%) rename web/settings/assets/{device-d70aa0bc.js => device-6b61f10b.js} (90%) rename web/settings/assets/{device-d77016c1.js => device-6bc81270.js} (87%) rename web/settings/assets/{device-aa08fc7f.js => device-6f67126a.js} (86%) rename web/settings/assets/{device-217340a2.js => device-78972dd5.js} (88%) rename web/settings/assets/{device-9507155a.js => device-79231634.js} (95%) rename web/settings/assets/{device-e3c08fb4.js => device-7c1416ae.js} (85%) rename web/settings/assets/{device-e48058b2.js => device-81cfe576.js} (91%) rename web/settings/assets/{device-a55b29f8.js => device-84ee9f0e.js} (96%) rename web/settings/assets/{device-ee213d99.js => device-8ad58e8f.js} (89%) rename web/settings/assets/{device-b78ab975.js => device-a211281f.js} (87%) rename web/settings/assets/{device-b9e954eb.js => device-a276a5e8.js} (89%) rename web/settings/assets/{device-26d1cd71.js => device-a5d80d29.js} (89%) create mode 100644 web/settings/assets/device-c06281fa.js rename web/settings/assets/{device-163e7968.js => device-c1fd6c65.js} (87%) rename web/settings/assets/{device-fd68e523.js => device-c35af9f0.js} (87%) rename web/settings/assets/{device-7db846be.js => device-c492c79f.js} (89%) rename web/settings/assets/{device-cbc50bc1.js => device-c6d8e75d.js} (91%) rename web/settings/assets/{device-796f2679.js => device-c8f59f1c.js} (88%) rename web/settings/assets/{device-0ac32d64.js => device-cbfffa6e.js} (91%) rename web/settings/assets/{device-007ca4fb.js => device-d36a7958.js} (85%) rename web/settings/assets/{device-e4295529.js => device-d4c2290d.js} (87%) rename web/settings/assets/{device-b4c7f099.js => device-dbb2dc55.js} (88%) rename web/settings/assets/{device-81fa6cad.js => device-e04c8431.js} (85%) rename web/settings/assets/{device-e85a7920.js => device-e0c91363.js} (90%) rename web/settings/assets/{device-c7f8802d.js => device-e1c1fe17.js} (86%) rename web/settings/assets/{device-ff40d8e1.js => device-e7707776.js} (89%) rename web/settings/assets/{device-711c4142.js => device-edfb92e7.js} (89%) rename web/settings/assets/{device-d3af1afc.js => device-f0707a59.js} (87%) rename web/settings/assets/{device-4674babe.js => device-f915e9e1.js} (85%) rename web/settings/assets/{device-8eeabc14.js => device-fc73a673.js} (87%) rename web/settings/assets/{displayTheme-65aaa96a.js => displayTheme-8212a288.js} (97%) rename web/settings/assets/{external_inverter-fc2cb871.js => external_inverter-114e7859.js} (86%) rename web/settings/assets/{external_inverter-3a87b7e0.js => external_inverter-12a71401.js} (86%) rename web/settings/assets/{external_inverter-79f2751a.js => external_inverter-266d661e.js} (92%) rename web/settings/assets/{index-b772b3e8.js => index-7f257223.js} (87%) rename web/settings/assets/{inverter-ef72abc7.js => inverter-012c416a.js} (89%) create mode 100644 web/settings/assets/inverter-066b9c17.js rename web/settings/assets/{inverter-3849924d.js => inverter-0748897a.js} (94%) rename web/settings/assets/{inverter-ac056d1d.js => inverter-127bad9a.js} (86%) rename web/settings/assets/{inverter-dfa572d8.js => inverter-141492ab.js} (86%) rename web/settings/assets/{inverter-a8d17a4e.js => inverter-142e36fb.js} (88%) rename web/settings/assets/{inverter-d4107377.js => inverter-1d15d663.js} (86%) rename web/settings/assets/{inverter-0f04bc4e.js => inverter-1e116570.js} (88%) rename web/settings/assets/{inverter-e440b330.js => inverter-1e818ed4.js} (86%) rename web/settings/assets/{inverter-6bf21593.js => inverter-1e83ea2a.js} (90%) rename web/settings/assets/{inverter-89f2126b.js => inverter-238294f2.js} (86%) rename web/settings/assets/{inverter-1bbefb9c.js => inverter-25c50f0a.js} (91%) rename web/settings/assets/{inverter-eee1527f.js => inverter-2cb1f91b.js} (93%) rename web/settings/assets/{inverter-36547adc.js => inverter-2cf514ef.js} (95%) rename web/settings/assets/{inverter-33d71d7c.js => inverter-3e75383d.js} (87%) rename web/settings/assets/{inverter-bc58fc73.js => inverter-40527e01.js} (91%) rename web/settings/assets/{inverter-fabd24ac.js => inverter-4355b01b.js} (86%) create mode 100644 web/settings/assets/inverter-44c0f415.js rename web/settings/assets/{inverter-5c832d19.js => inverter-4cef121f.js} (86%) rename web/settings/assets/{inverter-26fc0c4d.js => inverter-502f629e.js} (94%) rename web/settings/assets/{inverter-106f6b2a.js => inverter-5231c6c2.js} (88%) rename web/settings/assets/{inverter-a3407794.js => inverter-5378e193.js} (93%) rename web/settings/assets/{inverter-a15db0a0.js => inverter-5952b75a.js} (86%) rename web/settings/assets/{inverter-00a09c36.js => inverter-5cf7f4ea.js} (86%) rename web/settings/assets/{inverter-78f559db.js => inverter-766499df.js} (86%) rename web/settings/assets/{inverter-151fa9c5.js => inverter-7b30173d.js} (86%) rename web/settings/assets/{inverter-6f9c66d1.js => inverter-7ff062ac.js} (90%) rename web/settings/assets/{inverter-ab71cc4b.js => inverter-902f3710.js} (90%) rename web/settings/assets/{inverter-695b5c53.js => inverter-90f3d72b.js} (86%) delete mode 100644 web/settings/assets/inverter-9b9fe63d.js rename web/settings/assets/{inverter-b84b910e.js => inverter-9f25c7b8.js} (86%) rename web/settings/assets/{inverter-d426b124.js => inverter-9fe0373f.js} (86%) rename web/settings/assets/{inverter-47ad48de.js => inverter-a2fbbf7f.js} (90%) rename web/settings/assets/{inverter-239362ff.js => inverter-a66f1636.js} (89%) rename web/settings/assets/{inverter-a6ddec85.js => inverter-b1fa892a.js} (93%) rename web/settings/assets/{inverter-3639b6ee.js => inverter-b4097339.js} (88%) rename web/settings/assets/{inverter-c3c11140.js => inverter-c1bf7cde.js} (93%) rename web/settings/assets/{inverter-832936bd.js => inverter-c21d2035.js} (86%) rename web/settings/assets/{inverter-0769e573.js => inverter-c53f4fbf.js} (93%) rename web/settings/assets/{inverter-67becac8.js => inverter-c87e2737.js} (86%) rename web/settings/assets/{inverter-e06fd605.js => inverter-cbe3f201.js} (93%) rename web/settings/assets/{inverter-23c62af1.js => inverter-e45e304e.js} (86%) rename web/settings/assets/{inverter-7c9d893d.js => inverter-e4d3cc40.js} (86%) rename web/settings/assets/{inverter-1bcb55bc.js => inverter-ebb193da.js} (86%) rename web/settings/assets/{inverter-b8fdf4a4.js => inverter-eff782b7.js} (86%) rename web/settings/assets/{vehicle-d98ffef7.js => vehicle-20cc743a.js} (92%) rename web/settings/assets/{vehicle-8923672d.js => vehicle-4b3522a6.js} (94%) rename web/settings/assets/{vehicle-56b3de10.js => vehicle-4b98a311.js} (91%) rename web/settings/assets/{vehicle-391df8d0.js => vehicle-50dd5eb2.js} (93%) rename web/settings/assets/{vehicle-75667aad.js => vehicle-575fb854.js} (91%) rename web/settings/assets/{vehicle-67509117.js => vehicle-6c139591.js} (95%) rename web/settings/assets/{vehicle-4249fcff.js => vehicle-7cd93604.js} (95%) rename web/settings/assets/{vehicle-df2230d5.js => vehicle-85f19442.js} (92%) rename web/settings/assets/{vehicle-d1763e7a.js => vehicle-c5a65e75.js} (93%) rename web/settings/assets/{vehicle-0b6d061a.js => vehicle-e146fe0e.js} (90%) rename web/settings/assets/{vehicle-7df8b393.js => vehicle-e377a977.js} (94%) rename web/settings/assets/{vehicle-a27fc177.js => vehicle-e76a744b.js} (91%) rename web/settings/assets/{vehicle-b9c60ee5.js => vehicle-eb74ae86.js} (91%) delete mode 100644 web/settings/assets/vendor-59c39d33.js create mode 100644 web/settings/assets/vendor-6e5b23b4.js rename web/settings/assets/{vendor-axios-1660eacd.js => vendor-axios-86f7a224.js} (99%) rename web/settings/assets/{vendor-bootstrap-aeba3518.js => vendor-bootstrap-6c75b4fa.js} (99%) rename web/settings/assets/{vendor-chartjs-4871098e.js => vendor-chartjs-5f622c20.js} (99%) rename web/settings/assets/{vendor-fortawesome-532a6e75.js => vendor-fortawesome-396ff0d4.js} (99%) rename web/settings/assets/{vendor-jquery-7c356c02.js => vendor-jquery-921f231b.js} (99%) rename web/settings/assets/{vendor-sortablejs-1a35b5ad.js => vendor-sortablejs-b3476726.js} (99%) diff --git a/web/settings/assets/ChargeLog-70fa4b12.js b/web/settings/assets/ChargeLog-5f30bcb4.js similarity index 96% rename from web/settings/assets/ChargeLog-70fa4b12.js rename to web/settings/assets/ChargeLog-5f30bcb4.js index ac9ee302bf..af9e35cd32 100644 --- a/web/settings/assets/ChargeLog-70fa4b12.js +++ b/web/settings/assets/ChargeLog-5f30bcb4.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-b772b3e8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-396ff0d4.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-6e5b23b4.js";import{C as N}from"./index-7f257223.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-91778edb.js b/web/settings/assets/ChargePointInstallation-47aec5b8.js similarity index 94% rename from web/settings/assets/ChargePointInstallation-91778edb.js rename to web/settings/assets/ChargePointInstallation-47aec5b8.js index 930f25fefa..f1b73152c9 100644 --- a/web/settings/assets/ChargePointInstallation-91778edb.js +++ b/web/settings/assets/ChargePointInstallation-47aec5b8.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-b772b3e8.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-396ff0d4.js";import{_ as L,C as oe}from"./index-7f257223.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dc724714.js"),["assets/chargePoint-dc724714.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-83c5fa5d.js"),["assets/chargePoint-83c5fa5d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-10dd26b7.js"),["assets/chargePoint-10dd26b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-04c96676.js"),["assets/chargePoint-04c96676.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-7389b890.js"),["assets/chargePoint-7389b890.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-84db1946.js"),["assets/chargePoint-84db1946.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-022bb19a.js"),["assets/commands-022bb19a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-bf76fb9e.js b/web/settings/assets/Chart-49b639b4.js similarity index 98% rename from web/settings/assets/Chart-bf76fb9e.js rename to web/settings/assets/Chart-49b639b4.js index ffcee9c658..671355c1a9 100644 --- a/web/settings/assets/Chart-bf76fb9e.js +++ b/web/settings/assets/Chart-49b639b4.js @@ -1 +1 @@ -import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-b772b3e8.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-4871098e.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; +import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-7f257223.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-5f622c20.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; diff --git a/web/settings/assets/CloudConfig-e240cf70.js b/web/settings/assets/CloudConfig-da9d6c5e.js similarity index 96% rename from web/settings/assets/CloudConfig-e240cf70.js rename to web/settings/assets/CloudConfig-da9d6c5e.js index 9de0efd726..1a637f02df 100644 --- a/web/settings/assets/CloudConfig-e240cf70.js +++ b/web/settings/assets/CloudConfig-da9d6c5e.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-b772b3e8.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-99033254.js"),["assets/backup_cloud-99033254.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; +import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-396ff0d4.js";import{_ as D,C as N}from"./index-7f257223.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as T,a1 as q,z as S,n as v,G as F,I as W,a2 as G}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f9884751.js"),["assets/backup_cloud-f9884751.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-b6c73543.js"),["assets/backup_cloud-b6c73543.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-7f3e104b.js b/web/settings/assets/DebugConfig-ddbc648b.js similarity index 92% rename from web/settings/assets/DebugConfig-7f3e104b.js rename to web/settings/assets/DebugConfig-ddbc648b.js index b8c87a2c6e..6a5c9bdb3d 100644 --- a/web/settings/assets/DebugConfig-7f3e104b.js +++ b/web/settings/assets/DebugConfig-ddbc648b.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-b772b3e8.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Y as w,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as _}from"./index-7f257223.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-ff9f0666.js b/web/settings/assets/GeneralChargeConfig-ac29a689.js similarity index 87% rename from web/settings/assets/GeneralChargeConfig-ff9f0666.js rename to web/settings/assets/GeneralChargeConfig-ac29a689.js index 8af8f6cc47..33dc2b649f 100644 --- a/web/settings/assets/GeneralChargeConfig-ff9f0666.js +++ b/web/settings/assets/GeneralChargeConfig-ac29a689.js @@ -1 +1 @@ -import{C as c}from"./index-b772b3e8.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-7f257223.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-abdd6c9a.js b/web/settings/assets/GeneralConfig-36423866.js similarity index 97% rename from web/settings/assets/GeneralConfig-abdd6c9a.js rename to web/settings/assets/GeneralConfig-36423866.js index 4901c7d8c9..d4fc23a244 100644 --- a/web/settings/assets/GeneralConfig-abdd6c9a.js +++ b/web/settings/assets/GeneralConfig-36423866.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-b772b3e8.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-f0bba54b.js"),["assets/bat-f0bba54b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-50d72e0f.js"),["assets/bat-50d72e0f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-17e6f697.js"),["assets/counter-17e6f697.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-a8d17a4e.js"),["assets/inverter-a8d17a4e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-f915472c.js"),["assets/bat-f915472c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-4514b956.js"),["assets/counter-4514b956.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-ab71cc4b.js"),["assets/inverter-ab71cc4b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-0f04bc4e.js"),["assets/inverter-0f04bc4e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-aed0365b.js"),["assets/bat-aed0365b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-4f701c67.js"),["assets/bat_smart_energy-4f701c67.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-d019a50a.js"),["assets/counter-d019a50a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-56b26147.js"),["assets/device-56b26147.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-9b9fe63d.js"),["assets/inverter-9b9fe63d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-0dc562bb.js"),["assets/counter-0dc562bb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-368823e3.js"),["assets/device-368823e3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-56b26147.js"),["assets/device-56b26147.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-368823e3.js"),["assets/device-368823e3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-7f988a97.js b/web/settings/assets/HardwareInstallation-7f988a97.js new file mode 100644 index 0000000000..941e3aa9c7 --- /dev/null +++ b/web/settings/assets/HardwareInstallation-7f988a97.js @@ -0,0 +1 @@ +import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-396ff0d4.js";import{_ as e,C as X}from"./index-7f257223.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-9c4cb66b.js"),["assets/bat-9c4cb66b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-cd468b50.js"),["assets/counter-cd468b50.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-c21d2035.js"),["assets/inverter-c21d2035.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-7892c6ff.js"),["assets/bat-7892c6ff.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-8142b909.js"),["assets/counter-8142b909.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-12a71401.js"),["assets/external_inverter-12a71401.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-5cf7f4ea.js"),["assets/inverter-5cf7f4ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-6c7e4549.js"),["assets/bat-6c7e4549.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ba947ca5.js"),["assets/counter-ba947ca5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-a17994d5.js"),["assets/counter-a17994d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a2fbbf7f.js"),["assets/inverter-a2fbbf7f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-78371791.js"),["assets/bat-78371791.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-ee7b7fc2.js"),["assets/counter-ee7b7fc2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-114e7859.js"),["assets/external_inverter-114e7859.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-90f3d72b.js"),["assets/inverter-90f3d72b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-75067630.js"),["assets/counter-75067630.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b4097339.js"),["assets/inverter-b4097339.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-b9b268e2.js"),["assets/bat-b9b268e2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-f29aec2b.js"),["assets/counter-f29aec2b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-c87e2737.js"),["assets/inverter-c87e2737.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-bd482ff6.js"),["assets/bat-bd482ff6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-55cbf638.js"),["assets/counter_s0-55cbf638.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-b8d44e45.js"),["assets/counter_sm-b8d44e45.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-7b30173d.js"),["assets/inverter-7b30173d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-34292ed1.js"),["assets/bat-34292ed1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-db44398b.js"),["assets/counter-db44398b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-1d15d663.js"),["assets/inverter-1d15d663.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-e83535a3.js"),["assets/bat-e83535a3.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-cef05356.js"),["assets/counter-cef05356.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-502f629e.js"),["assets/inverter-502f629e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-56e740de.js"),["assets/bat-56e740de.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-1d0f3892.js"),["assets/counter-1d0f3892.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-4cef121f.js"),["assets/inverter-4cef121f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-ea469ce2.js"),["assets/counter-ea469ce2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f32f983a.js"),["assets/bat-f32f983a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-9db02eb0.js"),["assets/counter-9db02eb0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c1bf7cde.js"),["assets/inverter-c1bf7cde.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-dc4e356a.js"),["assets/counter-dc4e356a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-0748897a.js"),["assets/inverter-0748897a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-c06281fa.js"),["assets/device-c06281fa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-066b9c17.js"),["assets/inverter-066b9c17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-862fe547.js"),["assets/bat-862fe547.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-4b4b6fcb.js"),["assets/counter-4b4b6fcb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-c53f4fbf.js"),["assets/inverter-c53f4fbf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-816bc001.js"),["assets/counter-816bc001.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-012c416a.js"),["assets/inverter-012c416a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-8d465039.js"),["assets/bat-8d465039.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-0a70ba4e.js"),["assets/counter-0a70ba4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-141492ab.js"),["assets/inverter-141492ab.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-ce75f78c.js"),["assets/bat-ce75f78c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-9b94bf71.js"),["assets/counter-9b94bf71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-2cb1f91b.js"),["assets/inverter-2cb1f91b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3a522162.js"),["assets/bat-3a522162.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-b860d161.js"),["assets/bat-b860d161.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-c22cfbf7.js"),["assets/counter-c22cfbf7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-142e36fb.js"),["assets/inverter-142e36fb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-2c2c1739.js"),["assets/bat-2c2c1739.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-26ce225d.js"),["assets/counter-26ce225d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-902f3710.js"),["assets/inverter-902f3710.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1e116570.js"),["assets/inverter-1e116570.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-b60b6e4a.js"),["assets/counter-b60b6e4a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-4355b01b.js"),["assets/inverter-4355b01b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-d1b5bc9e.js"),["assets/counter-d1b5bc9e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-25c50f0a.js"),["assets/inverter-25c50f0a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-a812139b.js"),["assets/bat-a812139b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-7f35a959.js"),["assets/counter-7f35a959.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-1e818ed4.js"),["assets/inverter-1e818ed4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-0dc7df81.js"),["assets/bat-0dc7df81.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d3d1ea3f.js"),["assets/counter-d3d1ea3f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-e4d3cc40.js"),["assets/inverter-e4d3cc40.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-ec186c85.js"),["assets/bat-ec186c85.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-9fa50fa7.js"),["assets/bat-9fa50fa7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-8e5b4e19.js"),["assets/counter-8e5b4e19.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-ebb193da.js"),["assets/inverter-ebb193da.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b9602155.js"),["assets/counter-b9602155.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-0b0f0c4e.js"),["assets/counter-0b0f0c4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-1e83ea2a.js"),["assets/inverter-1e83ea2a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-0365f283.js"),["assets/bat-0365f283.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-16962a36.js"),["assets/bat_smart_energy-16962a36.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-058092d9.js"),["assets/counter-058092d9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-3b02f789.js"),["assets/device-3b02f789.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c0f415.js"),["assets/inverter-44c0f415.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-552bb794.js"),["assets/bat-552bb794.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-9fe0373f.js"),["assets/inverter-9fe0373f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-dc28491c.js"),["assets/counter-dc28491c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-3e75383d.js"),["assets/inverter-3e75383d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-56fdc27e.js"),["assets/counter-56fdc27e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-f9804b26.js"),["assets/counter-f9804b26.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-127bad9a.js"),["assets/inverter-127bad9a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-2df223d5.js"),["assets/counter-2df223d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-a66f1636.js"),["assets/inverter-a66f1636.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-e9bd65aa.js"),["assets/bat-e9bd65aa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-15317c83.js"),["assets/counter-15317c83.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-9f25c7b8.js"),["assets/inverter-9f25c7b8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-746d0e2d.js"),["assets/counter-746d0e2d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-cbe3f201.js"),["assets/inverter-cbe3f201.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-8e5275f9.js"),["assets/bat-8e5275f9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-5643a400.js"),["assets/counter-5643a400.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-266d661e.js"),["assets/external_inverter-266d661e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-b1fa892a.js"),["assets/inverter-b1fa892a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-6a774d77.js"),["assets/bat-6a774d77.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-5378e193.js"),["assets/inverter-5378e193.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-5027e2dc.js"),["assets/bat-5027e2dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-4bfdc2cd.js"),["assets/counter-4bfdc2cd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-eff782b7.js"),["assets/inverter-eff782b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-747ec82c.js"),["assets/bat-747ec82c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-02f588be.js"),["assets/counter-02f588be.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-e45e304e.js"),["assets/inverter-e45e304e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-9cf99a8b.js"),["assets/bat-9cf99a8b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-40527e01.js"),["assets/inverter-40527e01.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-c86a746f.js"),["assets/bat-c86a746f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-f1ea356e.js"),["assets/counter-f1ea356e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2c84b24e.js"),["assets/device-2c84b24e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-766499df.js"),["assets/inverter-766499df.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-5952b75a.js"),["assets/inverter-5952b75a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-96b30c95.js"),["assets/bat-96b30c95.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-35296ab7.js"),["assets/counter-35296ab7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-238294f2.js"),["assets/inverter-238294f2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-2f620f71.js"),["assets/bat_api-2f620f71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-1de28157.js"),["assets/bat_modbus-1de28157.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-81355be8.js"),["assets/counter-81355be8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-05d57853.js"),["assets/bat-05d57853.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-cc16dae8.js"),["assets/counter-cc16dae8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-7ff062ac.js"),["assets/inverter-7ff062ac.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-347ba16d.js"),["assets/counter-347ba16d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-9db9f949.js"),["assets/counter-9db9f949.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-2cf514ef.js"),["assets/inverter-2cf514ef.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-5231c6c2.js"),["assets/inverter-5231c6c2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-c06281fa.js"),["assets/device-c06281fa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-3b02f789.js"),["assets/device-3b02f789.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2c84b24e.js"),["assets/device-2c84b24e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-3c9fe452.js b/web/settings/assets/InstantChargeConfig-05d4f732.js similarity index 84% rename from web/settings/assets/InstantChargeConfig-3c9fe452.js rename to web/settings/assets/InstantChargeConfig-05d4f732.js index 7f7cef8073..2167328f12 100644 --- a/web/settings/assets/InstantChargeConfig-3c9fe452.js +++ b/web/settings/assets/InstantChargeConfig-05d4f732.js @@ -1 +1 @@ -import{C as l}from"./index-b772b3e8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-7f257223.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-f8408734.js b/web/settings/assets/LegalSettings-0aa17b31.js similarity index 84% rename from web/settings/assets/LegalSettings-f8408734.js rename to web/settings/assets/LegalSettings-0aa17b31.js index a349bef7cd..67736214eb 100644 --- a/web/settings/assets/LegalSettings-f8408734.js +++ b/web/settings/assets/LegalSettings-0aa17b31.js @@ -1 +1 @@ -import{C as g}from"./index-b772b3e8.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-7f257223.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-2faefad8.js b/web/settings/assets/LoadManagementConfig-bbe234ca.js similarity index 95% rename from web/settings/assets/LoadManagementConfig-2faefad8.js rename to web/settings/assets/LoadManagementConfig-bbe234ca.js index ece1928ffd..a5db62f363 100644 --- a/web/settings/assets/LoadManagementConfig-2faefad8.js +++ b/web/settings/assets/LoadManagementConfig-bbe234ca.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-b772b3e8.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as $}from"./index-7f257223.js";import{S as x}from"./OpenwbSortableList-db92c83c.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-dc2c20af.js b/web/settings/assets/MqttBridgeConfig-152c967f.js similarity index 95% rename from web/settings/assets/MqttBridgeConfig-dc2c20af.js rename to web/settings/assets/MqttBridgeConfig-152c967f.js index 5afb8838bb..24454df203 100644 --- a/web/settings/assets/MqttBridgeConfig-dc2c20af.js +++ b/web/settings/assets/MqttBridgeConfig-152c967f.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-b772b3e8.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-396ff0d4.js";import{C as D}from"./index-7f257223.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OpenwbSortableList-7d137bb0.js b/web/settings/assets/OpenwbSortableList-db92c83c.js similarity index 96% rename from web/settings/assets/OpenwbSortableList-7d137bb0.js rename to web/settings/assets/OpenwbSortableList-db92c83c.js index 718a810c55..7c1d7b57d3 100644 --- a/web/settings/assets/OpenwbSortableList-7d137bb0.js +++ b/web/settings/assets/OpenwbSortableList-db92c83c.js @@ -1,4 +1,4 @@ -import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-59c39d33.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-532a6e75.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` +import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-6e5b23b4.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-396ff0d4.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` [a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-7f257223.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-8212a288.js"),["assets/displayTheme-8212a288.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-7f257223.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-f93a9bf5.js b/web/settings/assets/ScheduledChargeConfig-3d69a67b.js similarity index 85% rename from web/settings/assets/ScheduledChargeConfig-f93a9bf5.js rename to web/settings/assets/ScheduledChargeConfig-3d69a67b.js index f378876600..5fd15108aa 100644 --- a/web/settings/assets/ScheduledChargeConfig-f93a9bf5.js +++ b/web/settings/assets/ScheduledChargeConfig-3d69a67b.js @@ -1 +1 @@ -import{C as g}from"./index-b772b3e8.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-7f257223.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-2f9e22dd.js b/web/settings/assets/Status-5b447ae3.js similarity index 98% rename from web/settings/assets/Status-2f9e22dd.js rename to web/settings/assets/Status-5b447ae3.js index 3f41508828..c8f87753c3 100644 --- a/web/settings/assets/Status-2f9e22dd.js +++ b/web/settings/assets/Status-5b447ae3.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-b772b3e8.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-7f257223.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-007f9ec4.js b/web/settings/assets/Support-6b29d3b0.js similarity index 94% rename from web/settings/assets/Support-007f9ec4.js rename to web/settings/assets/Support-6b29d3b0.js index 894c96f050..aa9f363dca 100644 --- a/web/settings/assets/Support-007f9ec4.js +++ b/web/settings/assets/Support-6b29d3b0.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-b772b3e8.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-396ff0d4.js";import{C as B}from"./index-7f257223.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-fff94d77.js b/web/settings/assets/System-57179bf7.js similarity index 97% rename from web/settings/assets/System-fff94d77.js rename to web/settings/assets/System-57179bf7.js index 4e53338926..7e44affc83 100644 --- a/web/settings/assets/System-fff94d77.js +++ b/web/settings/assets/System-57179bf7.js @@ -1 +1 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-b772b3e8.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-396ff0d4.js";import{C as E}from"./index-7f257223.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-73fc83a0.js b/web/settings/assets/TestingStore-06f9cd00.js similarity index 95% rename from web/settings/assets/TestingStore-73fc83a0.js rename to web/settings/assets/TestingStore-06f9cd00.js index d597ac26d2..4f5bece42b 100644 --- a/web/settings/assets/TestingStore-73fc83a0.js +++ b/web/settings/assets/TestingStore-06f9cd00.js @@ -1 +1 @@ -import{C as h}from"./index-b772b3e8.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-7f257223.js";import{S as y}from"./OpenwbSortableList-db92c83c.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-8875b0c6.js b/web/settings/assets/TimeChargeConfig-d8158fc9.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-8875b0c6.js rename to web/settings/assets/TimeChargeConfig-d8158fc9.js index fbe0fa8c3b..db99e33c7b 100644 --- a/web/settings/assets/TimeChargeConfig-8875b0c6.js +++ b/web/settings/assets/TimeChargeConfig-d8158fc9.js @@ -1 +1 @@ -import{C as l}from"./index-b772b3e8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-7f257223.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-7ad05e57.js b/web/settings/assets/VehicleConfig-64d2df77.js similarity index 94% rename from web/settings/assets/VehicleConfig-7ad05e57.js rename to web/settings/assets/VehicleConfig-64d2df77.js index 8d73bd4793..c575903219 100644 --- a/web/settings/assets/VehicleConfig-7ad05e57.js +++ b/web/settings/assets/VehicleConfig-64d2df77.js @@ -1 +1 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-b772b3e8.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-8923672d.js"),["assets/vehicle-8923672d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-b772b3e8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; +import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-396ff0d4.js";import{_ as S,C as ie}from"./index-7f257223.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-e76a744b.js"),["assets/vehicle-e76a744b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-e146fe0e.js"),["assets/vehicle-e146fe0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-4b98a311.js"),["assets/vehicle-4b98a311.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-c5a65e75.js"),["assets/vehicle-c5a65e75.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-e377a977.js"),["assets/vehicle-e377a977.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-7cd93604.js"),["assets/vehicle-7cd93604.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-20cc743a.js"),["assets/vehicle-20cc743a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-6c139591.js"),["assets/vehicle-6c139591.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-50dd5eb2.js"),["assets/vehicle-50dd5eb2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-85f19442.js"),["assets/vehicle-85f19442.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-575fb854.js"),["assets/vehicle-575fb854.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-4b3522a6.js"),["assets/vehicle-4b3522a6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-86f7a224.js","assets/index-7f257223.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-eb74ae86.js"),["assets/vehicle-eb74ae86.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/backup_cloud-99033254.js b/web/settings/assets/backup_cloud-b6c73543.js similarity index 96% rename from web/settings/assets/backup_cloud-99033254.js rename to web/settings/assets/backup_cloud-b6c73543.js index bf15f76b6e..bfa2c7b52c 100644 --- a/web/settings/assets/backup_cloud-99033254.js +++ b/web/settings/assets/backup_cloud-b6c73543.js @@ -1 +1 @@ -import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/backup_cloud-e2986e8e.js b/web/settings/assets/backup_cloud-f9884751.js similarity index 92% rename from web/settings/assets/backup_cloud-e2986e8e.js rename to web/settings/assets/backup_cloud-f9884751.js index 4c0b1db39f..0d3ed3e85f 100644 --- a/web/settings/assets/backup_cloud-e2986e8e.js +++ b/web/settings/assets/backup_cloud-f9884751.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-0365f283.js b/web/settings/assets/bat-0365f283.js new file mode 100644 index 0000000000..bb86e9e93a --- /dev/null +++ b/web/settings/assets/bat-0365f283.js @@ -0,0 +1 @@ +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-374aadf3.js b/web/settings/assets/bat-05d57853.js similarity index 87% rename from web/settings/assets/bat-374aadf3.js rename to web/settings/assets/bat-05d57853.js index d6899f5132..c2bb38bcaf 100644 --- a/web/settings/assets/bat-374aadf3.js +++ b/web/settings/assets/bat-05d57853.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-1761bb8c.js b/web/settings/assets/bat-0dc7df81.js similarity index 85% rename from web/settings/assets/bat-1761bb8c.js rename to web/settings/assets/bat-0dc7df81.js index 4d2b101ad0..1898a9dd68 100644 --- a/web/settings/assets/bat-1761bb8c.js +++ b/web/settings/assets/bat-0dc7df81.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f915472c.js b/web/settings/assets/bat-2c2c1739.js similarity index 90% rename from web/settings/assets/bat-f915472c.js rename to web/settings/assets/bat-2c2c1739.js index b3480ab719..17e031fee5 100644 --- a/web/settings/assets/bat-f915472c.js +++ b/web/settings/assets/bat-2c2c1739.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,B,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{D as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,B,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{D as default}; diff --git a/web/settings/assets/bat-fe54661f.js b/web/settings/assets/bat-34292ed1.js similarity index 86% rename from web/settings/assets/bat-fe54661f.js rename to web/settings/assets/bat-34292ed1.js index 2da04e8e58..80ee10fe98 100644 --- a/web/settings/assets/bat-fe54661f.js +++ b/web/settings/assets/bat-34292ed1.js @@ -1 +1 @@ -import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; +import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f0bba54b.js b/web/settings/assets/bat-3a522162.js similarity index 88% rename from web/settings/assets/bat-f0bba54b.js rename to web/settings/assets/bat-3a522162.js index 960c7a2c0d..8759e37e70 100644 --- a/web/settings/assets/bat-f0bba54b.js +++ b/web/settings/assets/bat-3a522162.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-dc75c3bc.js b/web/settings/assets/bat-5027e2dc.js similarity index 86% rename from web/settings/assets/bat-dc75c3bc.js rename to web/settings/assets/bat-5027e2dc.js index 7937b419b6..4344ec61ba 100644 --- a/web/settings/assets/bat-dc75c3bc.js +++ b/web/settings/assets/bat-5027e2dc.js @@ -1 +1 @@ -import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; +import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-d030cd24.js b/web/settings/assets/bat-552bb794.js similarity index 86% rename from web/settings/assets/bat-d030cd24.js rename to web/settings/assets/bat-552bb794.js index 7418c40bdb..f47142cccf 100644 --- a/web/settings/assets/bat-d030cd24.js +++ b/web/settings/assets/bat-552bb794.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-d3c76890.js b/web/settings/assets/bat-56e740de.js similarity index 86% rename from web/settings/assets/bat-d3c76890.js rename to web/settings/assets/bat-56e740de.js index fcb3f72202..19860a8fa0 100644 --- a/web/settings/assets/bat-d3c76890.js +++ b/web/settings/assets/bat-56e740de.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-57cb095c.js b/web/settings/assets/bat-6a774d77.js similarity index 90% rename from web/settings/assets/bat-57cb095c.js rename to web/settings/assets/bat-6a774d77.js index e34faad463..05b03f06e8 100644 --- a/web/settings/assets/bat-57cb095c.js +++ b/web/settings/assets/bat-6a774d77.js @@ -1 +1 @@ -import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-0735bfb3.js b/web/settings/assets/bat-6c7e4549.js similarity index 85% rename from web/settings/assets/bat-0735bfb3.js rename to web/settings/assets/bat-6c7e4549.js index eec115e327..8637702c3b 100644 --- a/web/settings/assets/bat-0735bfb3.js +++ b/web/settings/assets/bat-6c7e4549.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-41d251bc.js b/web/settings/assets/bat-747ec82c.js similarity index 86% rename from web/settings/assets/bat-41d251bc.js rename to web/settings/assets/bat-747ec82c.js index f0645392ac..780e68b37c 100644 --- a/web/settings/assets/bat-41d251bc.js +++ b/web/settings/assets/bat-747ec82c.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-1edb0ead.js b/web/settings/assets/bat-78371791.js similarity index 85% rename from web/settings/assets/bat-1edb0ead.js rename to web/settings/assets/bat-78371791.js index a5918ec61a..4e68b7d5ea 100644 --- a/web/settings/assets/bat-1edb0ead.js +++ b/web/settings/assets/bat-78371791.js @@ -1 +1 @@ -import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-701b11a5.js b/web/settings/assets/bat-7892c6ff.js similarity index 86% rename from web/settings/assets/bat-701b11a5.js rename to web/settings/assets/bat-7892c6ff.js index 6d7f056add..11bd35fb05 100644 --- a/web/settings/assets/bat-701b11a5.js +++ b/web/settings/assets/bat-7892c6ff.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-8594bebd.js b/web/settings/assets/bat-862fe547.js similarity index 93% rename from web/settings/assets/bat-8594bebd.js rename to web/settings/assets/bat-862fe547.js index e12c639625..9138399a55 100644 --- a/web/settings/assets/bat-8594bebd.js +++ b/web/settings/assets/bat-862fe547.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; +import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-9ba92541.js b/web/settings/assets/bat-8d465039.js similarity index 85% rename from web/settings/assets/bat-9ba92541.js rename to web/settings/assets/bat-8d465039.js index 299361a024..0351ddceff 100644 --- a/web/settings/assets/bat-9ba92541.js +++ b/web/settings/assets/bat-8d465039.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-ad02ebbd.js b/web/settings/assets/bat-8e5275f9.js similarity index 93% rename from web/settings/assets/bat-ad02ebbd.js rename to web/settings/assets/bat-8e5275f9.js index 1a599a958e..5ba66bdebb 100644 --- a/web/settings/assets/bat-ad02ebbd.js +++ b/web/settings/assets/bat-8e5275f9.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; +import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-94ced6ef.js b/web/settings/assets/bat-96b30c95.js similarity index 86% rename from web/settings/assets/bat-94ced6ef.js rename to web/settings/assets/bat-96b30c95.js index 5acd924931..1f6bd9f640 100644 --- a/web/settings/assets/bat-94ced6ef.js +++ b/web/settings/assets/bat-96b30c95.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f89e85e8.js b/web/settings/assets/bat-9c4cb66b.js similarity index 86% rename from web/settings/assets/bat-f89e85e8.js rename to web/settings/assets/bat-9c4cb66b.js index 4d61e35e01..ff7a6a9874 100644 --- a/web/settings/assets/bat-f89e85e8.js +++ b/web/settings/assets/bat-9c4cb66b.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-2cb7fcb7.js b/web/settings/assets/bat-9cf99a8b.js similarity index 86% rename from web/settings/assets/bat-2cb7fcb7.js rename to web/settings/assets/bat-9cf99a8b.js index 24868abeb2..4b2d50a9ab 100644 --- a/web/settings/assets/bat-2cb7fcb7.js +++ b/web/settings/assets/bat-9cf99a8b.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-5a3aee6e.js b/web/settings/assets/bat-9fa50fa7.js similarity index 86% rename from web/settings/assets/bat-5a3aee6e.js rename to web/settings/assets/bat-9fa50fa7.js index fd95429d1f..9cd6437f41 100644 --- a/web/settings/assets/bat-5a3aee6e.js +++ b/web/settings/assets/bat-9fa50fa7.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-e7a43b7b.js b/web/settings/assets/bat-a812139b.js similarity index 86% rename from web/settings/assets/bat-e7a43b7b.js rename to web/settings/assets/bat-a812139b.js index ff455b9147..9d1aea5666 100644 --- a/web/settings/assets/bat-e7a43b7b.js +++ b/web/settings/assets/bat-a812139b.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-aed0365b.js b/web/settings/assets/bat-aed0365b.js deleted file mode 100644 index 3fd9fb7fee..0000000000 --- a/web/settings/assets/bat-aed0365b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-50d72e0f.js b/web/settings/assets/bat-b860d161.js similarity index 88% rename from web/settings/assets/bat-50d72e0f.js rename to web/settings/assets/bat-b860d161.js index 2fd52037f1..7a38b1180e 100644 --- a/web/settings/assets/bat-50d72e0f.js +++ b/web/settings/assets/bat-b860d161.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{M as default}; diff --git a/web/settings/assets/bat-9e87a8db.js b/web/settings/assets/bat-b9b268e2.js similarity index 87% rename from web/settings/assets/bat-9e87a8db.js rename to web/settings/assets/bat-b9b268e2.js index 274b288996..182bc38726 100644 --- a/web/settings/assets/bat-9e87a8db.js +++ b/web/settings/assets/bat-b9b268e2.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-c9c9c592.js b/web/settings/assets/bat-bd482ff6.js similarity index 87% rename from web/settings/assets/bat-c9c9c592.js rename to web/settings/assets/bat-bd482ff6.js index f32a1eb37b..2b26315cdf 100644 --- a/web/settings/assets/bat-c9c9c592.js +++ b/web/settings/assets/bat-bd482ff6.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-86e9bc80.js b/web/settings/assets/bat-c86a746f.js similarity index 86% rename from web/settings/assets/bat-86e9bc80.js rename to web/settings/assets/bat-c86a746f.js index 0626002506..fea4a1d17a 100644 --- a/web/settings/assets/bat-86e9bc80.js +++ b/web/settings/assets/bat-c86a746f.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-f7664e62.js b/web/settings/assets/bat-ce75f78c.js similarity index 94% rename from web/settings/assets/bat-f7664e62.js rename to web/settings/assets/bat-ce75f78c.js index 0d8a9b746a..5969d3a747 100644 --- a/web/settings/assets/bat-f7664e62.js +++ b/web/settings/assets/bat-ce75f78c.js @@ -1 +1 @@ -import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; +import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-aaa94877.js b/web/settings/assets/bat-e83535a3.js similarity index 96% rename from web/settings/assets/bat-aaa94877.js rename to web/settings/assets/bat-e83535a3.js index 00fe921c46..a5eb78b8e7 100644 --- a/web/settings/assets/bat-aaa94877.js +++ b/web/settings/assets/bat-e83535a3.js @@ -1 +1 @@ -import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; +import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-0f0a85bc.js b/web/settings/assets/bat-e9bd65aa.js similarity index 86% rename from web/settings/assets/bat-0f0a85bc.js rename to web/settings/assets/bat-e9bd65aa.js index 7db03f6844..24cf0bff7b 100644 --- a/web/settings/assets/bat-0f0a85bc.js +++ b/web/settings/assets/bat-e9bd65aa.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-974e5d23.js b/web/settings/assets/bat-ec186c85.js similarity index 86% rename from web/settings/assets/bat-974e5d23.js rename to web/settings/assets/bat-ec186c85.js index 6be248526d..c688cad172 100644 --- a/web/settings/assets/bat-974e5d23.js +++ b/web/settings/assets/bat-ec186c85.js @@ -1 +1 @@ -import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; +import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-4f8ed3c9.js b/web/settings/assets/bat-f32f983a.js similarity index 94% rename from web/settings/assets/bat-4f8ed3c9.js rename to web/settings/assets/bat-f32f983a.js index 0a0dffcf87..4f4ed48b78 100644 --- a/web/settings/assets/bat-4f8ed3c9.js +++ b/web/settings/assets/bat-f32f983a.js @@ -1 +1 @@ -import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; +import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; diff --git a/web/settings/assets/bat_api-83f4eb5d.js b/web/settings/assets/bat_api-2f620f71.js similarity index 86% rename from web/settings/assets/bat_api-83f4eb5d.js rename to web/settings/assets/bat_api-2f620f71.js index 0ea5ac87e0..97a3c1e3a8 100644 --- a/web/settings/assets/bat_api-83f4eb5d.js +++ b/web/settings/assets/bat_api-2f620f71.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; +import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_modbus-b77c2017.js b/web/settings/assets/bat_modbus-1de28157.js similarity index 86% rename from web/settings/assets/bat_modbus-b77c2017.js rename to web/settings/assets/bat_modbus-1de28157.js index c717626317..a8df89b639 100644 --- a/web/settings/assets/bat_modbus-b77c2017.js +++ b/web/settings/assets/bat_modbus-1de28157.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_smart_energy-16962a36.js b/web/settings/assets/bat_smart_energy-16962a36.js new file mode 100644 index 0000000000..f09d6e5ebf --- /dev/null +++ b/web/settings/assets/bat_smart_energy-16962a36.js @@ -0,0 +1 @@ +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; diff --git a/web/settings/assets/bat_smart_energy-4f701c67.js b/web/settings/assets/bat_smart_energy-4f701c67.js deleted file mode 100644 index 475ca0aee0..0000000000 --- a/web/settings/assets/bat_smart_energy-4f701c67.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{$ as default}; diff --git a/web/settings/assets/chargePoint-651f8f5f.js b/web/settings/assets/chargePoint-04c96676.js similarity index 84% rename from web/settings/assets/chargePoint-651f8f5f.js rename to web/settings/assets/chargePoint-04c96676.js index 80e9c0143d..1c4d0d724b 100644 --- a/web/settings/assets/chargePoint-651f8f5f.js +++ b/web/settings/assets/chargePoint-04c96676.js @@ -1 +1 @@ -import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; +import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-c1796cd6.js b/web/settings/assets/chargePoint-10dd26b7.js similarity index 98% rename from web/settings/assets/chargePoint-c1796cd6.js rename to web/settings/assets/chargePoint-10dd26b7.js index 98d1627d3f..03067af939 100644 --- a/web/settings/assets/chargePoint-c1796cd6.js +++ b/web/settings/assets/chargePoint-10dd26b7.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; +import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; diff --git a/web/settings/assets/chargePoint-fe6ccb61.js b/web/settings/assets/chargePoint-7389b890.js similarity index 95% rename from web/settings/assets/chargePoint-fe6ccb61.js rename to web/settings/assets/chargePoint-7389b890.js index 5668492791..71244dcae3 100644 --- a/web/settings/assets/chargePoint-fe6ccb61.js +++ b/web/settings/assets/chargePoint-7389b890.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; +import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-6a041309.js b/web/settings/assets/chargePoint-83c5fa5d.js similarity index 92% rename from web/settings/assets/chargePoint-6a041309.js rename to web/settings/assets/chargePoint-83c5fa5d.js index 68e386cf80..1908bda98f 100644 --- a/web/settings/assets/chargePoint-6a041309.js +++ b/web/settings/assets/chargePoint-83c5fa5d.js @@ -1 +1 @@ -import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; +import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-33a12343.js b/web/settings/assets/chargePoint-84db1946.js similarity index 94% rename from web/settings/assets/chargePoint-33a12343.js rename to web/settings/assets/chargePoint-84db1946.js index 892542c0d2..6bfa8eb106 100644 --- a/web/settings/assets/chargePoint-33a12343.js +++ b/web/settings/assets/chargePoint-84db1946.js @@ -1 +1 @@ -import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; +import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-a0a4acbf.js b/web/settings/assets/chargePoint-dc724714.js similarity index 95% rename from web/settings/assets/chargePoint-a0a4acbf.js rename to web/settings/assets/chargePoint-dc724714.js index 535af45d50..b0ea471815 100644 --- a/web/settings/assets/chargePoint-a0a4acbf.js +++ b/web/settings/assets/chargePoint-dc724714.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; +import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/commands-0085051f.js b/web/settings/assets/commands-022bb19a.js similarity index 96% rename from web/settings/assets/commands-0085051f.js rename to web/settings/assets/commands-022bb19a.js index 61e80bb806..2f7bb693fa 100644 --- a/web/settings/assets/commands-0085051f.js +++ b/web/settings/assets/commands-022bb19a.js @@ -1 +1 @@ -import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; +import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-333c1a6d.js b/web/settings/assets/counter-02f588be.js similarity index 87% rename from web/settings/assets/counter-333c1a6d.js rename to web/settings/assets/counter-02f588be.js index 5e787bff99..f80c6b7a23 100644 --- a/web/settings/assets/counter-333c1a6d.js +++ b/web/settings/assets/counter-02f588be.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-058092d9.js b/web/settings/assets/counter-058092d9.js new file mode 100644 index 0000000000..c756c1bc58 --- /dev/null +++ b/web/settings/assets/counter-058092d9.js @@ -0,0 +1 @@ +import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-8003bfd1.js b/web/settings/assets/counter-0a70ba4e.js similarity index 86% rename from web/settings/assets/counter-8003bfd1.js rename to web/settings/assets/counter-0a70ba4e.js index bbd2270982..9fc29b8cbe 100644 --- a/web/settings/assets/counter-8003bfd1.js +++ b/web/settings/assets/counter-0a70ba4e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-596d7121.js b/web/settings/assets/counter-0b0f0c4e.js similarity index 89% rename from web/settings/assets/counter-596d7121.js rename to web/settings/assets/counter-0b0f0c4e.js index 6f8fd2a345..483975aaa9 100644 --- a/web/settings/assets/counter-596d7121.js +++ b/web/settings/assets/counter-0b0f0c4e.js @@ -1 +1 @@ -import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; +import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-be7ebe08.js b/web/settings/assets/counter-15317c83.js similarity index 86% rename from web/settings/assets/counter-be7ebe08.js rename to web/settings/assets/counter-15317c83.js index 553254853a..7fedd2ac49 100644 --- a/web/settings/assets/counter-be7ebe08.js +++ b/web/settings/assets/counter-15317c83.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-30000cd2.js b/web/settings/assets/counter-1d0f3892.js similarity index 86% rename from web/settings/assets/counter-30000cd2.js rename to web/settings/assets/counter-1d0f3892.js index fa87cef5f1..ace70f6b5f 100644 --- a/web/settings/assets/counter-30000cd2.js +++ b/web/settings/assets/counter-1d0f3892.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-4514b956.js b/web/settings/assets/counter-26ce225d.js similarity index 90% rename from web/settings/assets/counter-4514b956.js rename to web/settings/assets/counter-26ce225d.js index 3f025a7056..a51d86f1c9 100644 --- a/web/settings/assets/counter-4514b956.js +++ b/web/settings/assets/counter-26ce225d.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,h,B,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const V=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{V as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,h,B,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const V=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-e44eee41.js b/web/settings/assets/counter-2df223d5.js similarity index 86% rename from web/settings/assets/counter-e44eee41.js rename to web/settings/assets/counter-2df223d5.js index c2cf10570e..7cc6ecfa40 100644 --- a/web/settings/assets/counter-e44eee41.js +++ b/web/settings/assets/counter-2df223d5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-bac10632.js b/web/settings/assets/counter-347ba16d.js similarity index 90% rename from web/settings/assets/counter-bac10632.js rename to web/settings/assets/counter-347ba16d.js index de33854142..0a7b61871b 100644 --- a/web/settings/assets/counter-bac10632.js +++ b/web/settings/assets/counter-347ba16d.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; +import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-88eb412e.js b/web/settings/assets/counter-35296ab7.js similarity index 87% rename from web/settings/assets/counter-88eb412e.js rename to web/settings/assets/counter-35296ab7.js index fb29c57c41..98e34953f8 100644 --- a/web/settings/assets/counter-88eb412e.js +++ b/web/settings/assets/counter-35296ab7.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-e9ec98c5.js b/web/settings/assets/counter-4b4b6fcb.js similarity index 89% rename from web/settings/assets/counter-e9ec98c5.js rename to web/settings/assets/counter-4b4b6fcb.js index e5272b040f..77b770a23c 100644 --- a/web/settings/assets/counter-e9ec98c5.js +++ b/web/settings/assets/counter-4b4b6fcb.js @@ -1 +1 @@ -import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-1dc0e174.js b/web/settings/assets/counter-4bfdc2cd.js similarity index 86% rename from web/settings/assets/counter-1dc0e174.js rename to web/settings/assets/counter-4bfdc2cd.js index b462db6f1c..7f2d8de507 100644 --- a/web/settings/assets/counter-1dc0e174.js +++ b/web/settings/assets/counter-4bfdc2cd.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-2d2082cf.js b/web/settings/assets/counter-5643a400.js similarity index 91% rename from web/settings/assets/counter-2d2082cf.js rename to web/settings/assets/counter-5643a400.js index 955761add9..ba3efa4c05 100644 --- a/web/settings/assets/counter-2d2082cf.js +++ b/web/settings/assets/counter-5643a400.js @@ -1 +1 @@ -import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; +import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-dc035a3e.js b/web/settings/assets/counter-56fdc27e.js similarity index 86% rename from web/settings/assets/counter-dc035a3e.js rename to web/settings/assets/counter-56fdc27e.js index 29a2299749..8530f7048b 100644 --- a/web/settings/assets/counter-dc035a3e.js +++ b/web/settings/assets/counter-56fdc27e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-1aee48a7.js b/web/settings/assets/counter-746d0e2d.js similarity index 93% rename from web/settings/assets/counter-1aee48a7.js rename to web/settings/assets/counter-746d0e2d.js index f714278c6e..c817162536 100644 --- a/web/settings/assets/counter-1aee48a7.js +++ b/web/settings/assets/counter-746d0e2d.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f3278b0c.js b/web/settings/assets/counter-75067630.js similarity index 88% rename from web/settings/assets/counter-f3278b0c.js rename to web/settings/assets/counter-75067630.js index 13acad6b55..34f63c4096 100644 --- a/web/settings/assets/counter-f3278b0c.js +++ b/web/settings/assets/counter-75067630.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; diff --git a/web/settings/assets/counter-66249572.js b/web/settings/assets/counter-7f35a959.js similarity index 86% rename from web/settings/assets/counter-66249572.js rename to web/settings/assets/counter-7f35a959.js index ed976ef352..6e30fcfb1e 100644 --- a/web/settings/assets/counter-66249572.js +++ b/web/settings/assets/counter-7f35a959.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-836555cd.js b/web/settings/assets/counter-81355be8.js similarity index 86% rename from web/settings/assets/counter-836555cd.js rename to web/settings/assets/counter-81355be8.js index ada99df79b..eddd887a05 100644 --- a/web/settings/assets/counter-836555cd.js +++ b/web/settings/assets/counter-81355be8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-122dd37a.js b/web/settings/assets/counter-8142b909.js similarity index 86% rename from web/settings/assets/counter-122dd37a.js rename to web/settings/assets/counter-8142b909.js index cc1f609896..ed6dcd0bcd 100644 --- a/web/settings/assets/counter-122dd37a.js +++ b/web/settings/assets/counter-8142b909.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-6d9b8554.js b/web/settings/assets/counter-816bc001.js similarity index 88% rename from web/settings/assets/counter-6d9b8554.js rename to web/settings/assets/counter-816bc001.js index 979fc32228..ce944a5267 100644 --- a/web/settings/assets/counter-6d9b8554.js +++ b/web/settings/assets/counter-816bc001.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-fa32a0cf.js b/web/settings/assets/counter-8e5b4e19.js similarity index 86% rename from web/settings/assets/counter-fa32a0cf.js rename to web/settings/assets/counter-8e5b4e19.js index eb4971e375..9376ecab71 100644 --- a/web/settings/assets/counter-fa32a0cf.js +++ b/web/settings/assets/counter-8e5b4e19.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-2daf569f.js b/web/settings/assets/counter-9b94bf71.js similarity index 96% rename from web/settings/assets/counter-2daf569f.js rename to web/settings/assets/counter-9b94bf71.js index 151098ded5..84835022ad 100644 --- a/web/settings/assets/counter-2daf569f.js +++ b/web/settings/assets/counter-9b94bf71.js @@ -1 +1 @@ -import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; +import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; diff --git a/web/settings/assets/counter-c8a6ec77.js b/web/settings/assets/counter-9db02eb0.js similarity index 96% rename from web/settings/assets/counter-c8a6ec77.js rename to web/settings/assets/counter-9db02eb0.js index d478b462f9..8b5b4043ea 100644 --- a/web/settings/assets/counter-c8a6ec77.js +++ b/web/settings/assets/counter-9db02eb0.js @@ -1 +1 @@ -import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; +import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-36353861.js b/web/settings/assets/counter-9db9f949.js similarity index 92% rename from web/settings/assets/counter-36353861.js rename to web/settings/assets/counter-9db9f949.js index 657fa805bb..7040c62b83 100644 --- a/web/settings/assets/counter-36353861.js +++ b/web/settings/assets/counter-9db9f949.js @@ -1 +1 @@ -import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; +import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-96604727.js b/web/settings/assets/counter-a17994d5.js similarity index 90% rename from web/settings/assets/counter-96604727.js rename to web/settings/assets/counter-a17994d5.js index 1325107ca5..36274c97bd 100644 --- a/web/settings/assets/counter-96604727.js +++ b/web/settings/assets/counter-a17994d5.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-091a96b7.js b/web/settings/assets/counter-b60b6e4a.js similarity index 88% rename from web/settings/assets/counter-091a96b7.js rename to web/settings/assets/counter-b60b6e4a.js index 169c01cddd..060a95e3ce 100644 --- a/web/settings/assets/counter-091a96b7.js +++ b/web/settings/assets/counter-b60b6e4a.js @@ -1 +1 @@ -import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; +import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-373a1c10.js b/web/settings/assets/counter-b9602155.js similarity index 86% rename from web/settings/assets/counter-373a1c10.js rename to web/settings/assets/counter-b9602155.js index f2fce3a239..bb90228341 100644 --- a/web/settings/assets/counter-373a1c10.js +++ b/web/settings/assets/counter-b9602155.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; diff --git a/web/settings/assets/counter-74542c06.js b/web/settings/assets/counter-ba947ca5.js similarity index 86% rename from web/settings/assets/counter-74542c06.js rename to web/settings/assets/counter-ba947ca5.js index 89248d9de6..91891e506b 100644 --- a/web/settings/assets/counter-74542c06.js +++ b/web/settings/assets/counter-ba947ca5.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-17e6f697.js b/web/settings/assets/counter-c22cfbf7.js similarity index 88% rename from web/settings/assets/counter-17e6f697.js rename to web/settings/assets/counter-c22cfbf7.js index 49e73d969a..92ec092a7d 100644 --- a/web/settings/assets/counter-17e6f697.js +++ b/web/settings/assets/counter-c22cfbf7.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const C=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const C=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-d6b54631.js b/web/settings/assets/counter-cc16dae8.js similarity index 90% rename from web/settings/assets/counter-d6b54631.js rename to web/settings/assets/counter-cc16dae8.js index 9fbd077e4e..2a61049c86 100644 --- a/web/settings/assets/counter-d6b54631.js +++ b/web/settings/assets/counter-cc16dae8.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; +import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-5c24ebc7.js b/web/settings/assets/counter-cd468b50.js similarity index 86% rename from web/settings/assets/counter-5c24ebc7.js rename to web/settings/assets/counter-cd468b50.js index 4748923dea..262eb8dd44 100644 --- a/web/settings/assets/counter-5c24ebc7.js +++ b/web/settings/assets/counter-cd468b50.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-b5fad35e.js b/web/settings/assets/counter-cef05356.js similarity index 97% rename from web/settings/assets/counter-b5fad35e.js rename to web/settings/assets/counter-cef05356.js index 49711f6bce..b6bfd37d02 100644 --- a/web/settings/assets/counter-b5fad35e.js +++ b/web/settings/assets/counter-cef05356.js @@ -1 +1 @@ -import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; +import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-d019a50a.js b/web/settings/assets/counter-d019a50a.js deleted file mode 100644 index db2a3e0626..0000000000 --- a/web/settings/assets/counter-d019a50a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as t,k as u,l as p,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-8fdb9d26.js b/web/settings/assets/counter-d1b5bc9e.js similarity index 91% rename from web/settings/assets/counter-8fdb9d26.js rename to web/settings/assets/counter-d1b5bc9e.js index b2418bec3d..938722c847 100644 --- a/web/settings/assets/counter-8fdb9d26.js +++ b/web/settings/assets/counter-d1b5bc9e.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-8741a800.js b/web/settings/assets/counter-d3d1ea3f.js similarity index 85% rename from web/settings/assets/counter-8741a800.js rename to web/settings/assets/counter-d3d1ea3f.js index a50d1080c7..1efa48d633 100644 --- a/web/settings/assets/counter-8741a800.js +++ b/web/settings/assets/counter-d3d1ea3f.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-87037b08.js b/web/settings/assets/counter-db44398b.js similarity index 86% rename from web/settings/assets/counter-87037b08.js rename to web/settings/assets/counter-db44398b.js index 2ed4ee4736..6a490e9a6d 100644 --- a/web/settings/assets/counter-87037b08.js +++ b/web/settings/assets/counter-db44398b.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-2d7380c9.js b/web/settings/assets/counter-dc28491c.js similarity index 87% rename from web/settings/assets/counter-2d7380c9.js rename to web/settings/assets/counter-dc28491c.js index d6ab6f1a10..a0ddc6e0a3 100644 --- a/web/settings/assets/counter-2d7380c9.js +++ b/web/settings/assets/counter-dc28491c.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-34bc9327.js b/web/settings/assets/counter-dc4e356a.js similarity index 85% rename from web/settings/assets/counter-34bc9327.js rename to web/settings/assets/counter-dc4e356a.js index d019c2ec26..a6b6d7754b 100644 --- a/web/settings/assets/counter-34bc9327.js +++ b/web/settings/assets/counter-dc4e356a.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-29ac2dbe.js b/web/settings/assets/counter-ea469ce2.js similarity index 86% rename from web/settings/assets/counter-29ac2dbe.js rename to web/settings/assets/counter-ea469ce2.js index cb630858ae..cf7482fc70 100644 --- a/web/settings/assets/counter-29ac2dbe.js +++ b/web/settings/assets/counter-ea469ce2.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-3aa24e62.js b/web/settings/assets/counter-ee7b7fc2.js similarity index 85% rename from web/settings/assets/counter-3aa24e62.js rename to web/settings/assets/counter-ee7b7fc2.js index 372ade3a74..203501d4ce 100644 --- a/web/settings/assets/counter-3aa24e62.js +++ b/web/settings/assets/counter-ee7b7fc2.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-27a9c2ee.js b/web/settings/assets/counter-f1ea356e.js similarity index 90% rename from web/settings/assets/counter-27a9c2ee.js rename to web/settings/assets/counter-f1ea356e.js index fa531f9f54..9f0ad0df19 100644 --- a/web/settings/assets/counter-27a9c2ee.js +++ b/web/settings/assets/counter-f1ea356e.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; +import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-e3b8a3fa.js b/web/settings/assets/counter-f29aec2b.js similarity index 86% rename from web/settings/assets/counter-e3b8a3fa.js rename to web/settings/assets/counter-f29aec2b.js index 54ee581a8a..c6f2ff8aa1 100644 --- a/web/settings/assets/counter-e3b8a3fa.js +++ b/web/settings/assets/counter-f29aec2b.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-0dc562bb.js b/web/settings/assets/counter-f9804b26.js similarity index 90% rename from web/settings/assets/counter-0dc562bb.js rename to web/settings/assets/counter-f9804b26.js index 1c39106d52..4ef0b35edb 100644 --- a/web/settings/assets/counter-0dc562bb.js +++ b/web/settings/assets/counter-f9804b26.js @@ -1 +1 @@ -import{_ as c,p as s,k as u,l as p,A as r,L as a,u as t,q as e,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},m={class:"device-solar_log-counter"},f={class:"small"},g=e("span",{class:"text-danger"},[t(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),e("br")],-1),h=e("a",{href:"https://github.com/openWB/core/pull/934/files",target:"_blank",rel:"noopener noreferrer"}," https://github.com/openWB/core/pull/934/files ",-1);function b(o,n,v,k,w,B){const i=s("openwb-base-heading"),l=s("openwb-base-alert");return u(),p("div",m,[r(i,null,{default:a(()=>[t(" Einstellungen für Solar-Log Zähler "),e("span",f,"(Modul: "+d(o.$options.name)+")",1)]),_:1}),r(l,{subtype:"info"},{default:a(()=>[g,t(" 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 hier: "),h]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; +import{_ as c,p as s,k as u,l as p,A as r,L as a,u as t,q as e,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},m={class:"device-solar_log-counter"},f={class:"small"},g=e("span",{class:"text-danger"},[t(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),e("br")],-1),h=e("a",{href:"https://github.com/openWB/core/pull/934/files",target:"_blank",rel:"noopener noreferrer"}," https://github.com/openWB/core/pull/934/files ",-1);function b(o,n,v,k,w,B){const i=s("openwb-base-heading"),l=s("openwb-base-alert");return u(),p("div",m,[r(i,null,{default:a(()=>[t(" Einstellungen für Solar-Log Zähler "),e("span",f,"(Modul: "+d(o.$options.name)+")",1)]),_:1}),r(l,{subtype:"info"},{default:a(()=>[g,t(" 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 hier: "),h]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter_s0-764584ba.js b/web/settings/assets/counter_s0-55cbf638.js similarity index 86% rename from web/settings/assets/counter_s0-764584ba.js rename to web/settings/assets/counter_s0-55cbf638.js index 24b5888094..3a71abc701 100644 --- a/web/settings/assets/counter_s0-764584ba.js +++ b/web/settings/assets/counter_s0-55cbf638.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; +import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-ea82381f.js b/web/settings/assets/counter_sm-b8d44e45.js similarity index 96% rename from web/settings/assets/counter_sm-ea82381f.js rename to web/settings/assets/counter_sm-b8d44e45.js index ca3c9898f2..7727cffe90 100644 --- a/web/settings/assets/counter_sm-ea82381f.js +++ b/web/settings/assets/counter_sm-b8d44e45.js @@ -1 +1 @@ -import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; +import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-38cd05bd.js b/web/settings/assets/device-0afef9f8.js similarity index 89% rename from web/settings/assets/device-38cd05bd.js rename to web/settings/assets/device-0afef9f8.js index 7b4cfeb778..a02bfa950f 100644 --- a/web/settings/assets/device-38cd05bd.js +++ b/web/settings/assets/device-0afef9f8.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; +import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-2677ebed.js b/web/settings/assets/device-0d55c208.js similarity index 89% rename from web/settings/assets/device-2677ebed.js rename to web/settings/assets/device-0d55c208.js index 37edb97084..b6868dfed9 100644 --- a/web/settings/assets/device-2677ebed.js +++ b/web/settings/assets/device-0d55c208.js @@ -1 +1 @@ -import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; +import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-5eae489e.js b/web/settings/assets/device-0e74116d.js similarity index 90% rename from web/settings/assets/device-5eae489e.js rename to web/settings/assets/device-0e74116d.js index 8e9be8943a..b229a36c5f 100644 --- a/web/settings/assets/device-5eae489e.js +++ b/web/settings/assets/device-0e74116d.js @@ -1 +1 @@ -import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-1ae9d038.js b/web/settings/assets/device-0fcb1898.js similarity index 94% rename from web/settings/assets/device-1ae9d038.js rename to web/settings/assets/device-0fcb1898.js index 351d664fb9..5c1d042a7e 100644 --- a/web/settings/assets/device-1ae9d038.js +++ b/web/settings/assets/device-0fcb1898.js @@ -1 +1 @@ -import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; +import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-8c005647.js b/web/settings/assets/device-18559536.js similarity index 85% rename from web/settings/assets/device-8c005647.js rename to web/settings/assets/device-18559536.js index df95ef67a0..5ee7dfbaeb 100644 --- a/web/settings/assets/device-8c005647.js +++ b/web/settings/assets/device-18559536.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-bfe71246.js b/web/settings/assets/device-198215c0.js similarity index 90% rename from web/settings/assets/device-bfe71246.js rename to web/settings/assets/device-198215c0.js index 734c0abb4c..4694eb7d92 100644 --- a/web/settings/assets/device-bfe71246.js +++ b/web/settings/assets/device-198215c0.js @@ -1 +1 @@ -import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; +import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-27f1f947.js b/web/settings/assets/device-1e5af3ea.js similarity index 87% rename from web/settings/assets/device-27f1f947.js rename to web/settings/assets/device-1e5af3ea.js index d2de4398d0..8d9580d83d 100644 --- a/web/settings/assets/device-27f1f947.js +++ b/web/settings/assets/device-1e5af3ea.js @@ -1 +1 @@ -import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; +import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-7eb7f018.js b/web/settings/assets/device-1f86752d.js similarity index 87% rename from web/settings/assets/device-7eb7f018.js rename to web/settings/assets/device-1f86752d.js index 77ed0ab65f..12597460a9 100644 --- a/web/settings/assets/device-7eb7f018.js +++ b/web/settings/assets/device-1f86752d.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-658cf7d5.js b/web/settings/assets/device-2078311b.js similarity index 87% rename from web/settings/assets/device-658cf7d5.js rename to web/settings/assets/device-2078311b.js index e1f889ec61..4fe552fcbc 100644 --- a/web/settings/assets/device-658cf7d5.js +++ b/web/settings/assets/device-2078311b.js @@ -1 +1 @@ -import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; +import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-f0ead4af.js b/web/settings/assets/device-2120f8c0.js similarity index 87% rename from web/settings/assets/device-f0ead4af.js rename to web/settings/assets/device-2120f8c0.js index 6dca389e39..dd842d7129 100644 --- a/web/settings/assets/device-f0ead4af.js +++ b/web/settings/assets/device-2120f8c0.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-3d5e6b95.js b/web/settings/assets/device-227fe008.js similarity index 88% rename from web/settings/assets/device-3d5e6b95.js rename to web/settings/assets/device-227fe008.js index c70f9f0b48..3f490263a1 100644 --- a/web/settings/assets/device-3d5e6b95.js +++ b/web/settings/assets/device-227fe008.js @@ -1 +1 @@ -import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; +import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-ae95c2d3.js b/web/settings/assets/device-258d34d8.js similarity index 87% rename from web/settings/assets/device-ae95c2d3.js rename to web/settings/assets/device-258d34d8.js index fbf3710050..3ed5478d2a 100644 --- a/web/settings/assets/device-ae95c2d3.js +++ b/web/settings/assets/device-258d34d8.js @@ -1 +1 @@ -import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; +import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-2c84b24e.js b/web/settings/assets/device-2c84b24e.js new file mode 100644 index 0000000000..a1264b78a0 --- /dev/null +++ b/web/settings/assets/device-2c84b24e.js @@ -0,0 +1 @@ +import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-368823e3.js b/web/settings/assets/device-368823e3.js deleted file mode 100644 index 89fe2d353e..0000000000 --- a/web/settings/assets/device-368823e3.js +++ /dev/null @@ -1 +0,0 @@ -import{_,p as n,k as m,l as b,A as t,L as u,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-sungrow"},h={class:"small"};function x(o,e,s,q,B,i){const d=n("openwb-base-heading"),l=n("openwb-base-alert"),p=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",v,[t(d,null,{default:u(()=>[r(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(l,{subtype:"info"},{default:u(()=>[r(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>i.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":s.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=a=>i.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=_(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-cbdcd521.js b/web/settings/assets/device-3875053c.js similarity index 92% rename from web/settings/assets/device-cbdcd521.js rename to web/settings/assets/device-3875053c.js index 83215f29ed..89ab3408e2 100644 --- a/web/settings/assets/device-cbdcd521.js +++ b/web/settings/assets/device-3875053c.js @@ -1 +1 @@ -import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; +import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-805a57b1.js b/web/settings/assets/device-39d25848.js similarity index 89% rename from web/settings/assets/device-805a57b1.js rename to web/settings/assets/device-39d25848.js index 1056e1cfab..fa6921f4ce 100644 --- a/web/settings/assets/device-805a57b1.js +++ b/web/settings/assets/device-39d25848.js @@ -1 +1 @@ -import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; +import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-3b02f789.js b/web/settings/assets/device-3b02f789.js new file mode 100644 index 0000000000..7586f17a09 --- /dev/null +++ b/web/settings/assets/device-3b02f789.js @@ -0,0 +1 @@ +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-f7ed291a.js b/web/settings/assets/device-43fe3974.js similarity index 87% rename from web/settings/assets/device-f7ed291a.js rename to web/settings/assets/device-43fe3974.js index c95c6a143d..61a8e76550 100644 --- a/web/settings/assets/device-f7ed291a.js +++ b/web/settings/assets/device-43fe3974.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-aba64669.js b/web/settings/assets/device-47e73557.js similarity index 89% rename from web/settings/assets/device-aba64669.js rename to web/settings/assets/device-47e73557.js index 068841cb8d..ea59f31398 100644 --- a/web/settings/assets/device-aba64669.js +++ b/web/settings/assets/device-47e73557.js @@ -1 +1 @@ -import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; +import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-c7f03dad.js b/web/settings/assets/device-48b6056d.js similarity index 90% rename from web/settings/assets/device-c7f03dad.js rename to web/settings/assets/device-48b6056d.js index 63657e2574..b0327c3df9 100644 --- a/web/settings/assets/device-c7f03dad.js +++ b/web/settings/assets/device-48b6056d.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; +import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-774e8229.js b/web/settings/assets/device-4a9aeedd.js similarity index 87% rename from web/settings/assets/device-774e8229.js rename to web/settings/assets/device-4a9aeedd.js index 58a9be519e..93fcb5338d 100644 --- a/web/settings/assets/device-774e8229.js +++ b/web/settings/assets/device-4a9aeedd.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-97a184d3.js b/web/settings/assets/device-4b441c71.js similarity index 95% rename from web/settings/assets/device-97a184d3.js rename to web/settings/assets/device-4b441c71.js index a6973f02ae..2ad8c7a930 100644 --- a/web/settings/assets/device-97a184d3.js +++ b/web/settings/assets/device-4b441c71.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-ed00b326.js b/web/settings/assets/device-51726464.js similarity index 89% rename from web/settings/assets/device-ed00b326.js rename to web/settings/assets/device-51726464.js index 030a62e773..e20b3707aa 100644 --- a/web/settings/assets/device-ed00b326.js +++ b/web/settings/assets/device-51726464.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-56b26147.js b/web/settings/assets/device-56b26147.js deleted file mode 100644 index 25fa18191f..0000000000 --- a/web/settings/assets/device-56b26147.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,d){const r=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-1da87f6d.js b/web/settings/assets/device-5a0ee5e7.js similarity index 87% rename from web/settings/assets/device-1da87f6d.js rename to web/settings/assets/device-5a0ee5e7.js index 3a0efa899d..ae09c56c38 100644 --- a/web/settings/assets/device-1da87f6d.js +++ b/web/settings/assets/device-5a0ee5e7.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-8d3984b8.js b/web/settings/assets/device-5ae4acfc.js similarity index 89% rename from web/settings/assets/device-8d3984b8.js rename to web/settings/assets/device-5ae4acfc.js index 6f68314a6e..2e2190bf76 100644 --- a/web/settings/assets/device-8d3984b8.js +++ b/web/settings/assets/device-5ae4acfc.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-99280bbf.js b/web/settings/assets/device-61765b74.js similarity index 87% rename from web/settings/assets/device-99280bbf.js rename to web/settings/assets/device-61765b74.js index 1f9f222a02..2ebd543433 100644 --- a/web/settings/assets/device-99280bbf.js +++ b/web/settings/assets/device-61765b74.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-d70aa0bc.js b/web/settings/assets/device-6b61f10b.js similarity index 90% rename from web/settings/assets/device-d70aa0bc.js rename to web/settings/assets/device-6b61f10b.js index ccd8609f1f..04050fdc67 100644 --- a/web/settings/assets/device-d70aa0bc.js +++ b/web/settings/assets/device-6b61f10b.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-d77016c1.js b/web/settings/assets/device-6bc81270.js similarity index 87% rename from web/settings/assets/device-d77016c1.js rename to web/settings/assets/device-6bc81270.js index d123d14d7d..5f3f9e85be 100644 --- a/web/settings/assets/device-d77016c1.js +++ b/web/settings/assets/device-6bc81270.js @@ -1 +1 @@ -import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; +import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-aa08fc7f.js b/web/settings/assets/device-6f67126a.js similarity index 86% rename from web/settings/assets/device-aa08fc7f.js rename to web/settings/assets/device-6f67126a.js index 1e4fcd9319..2bb009a18e 100644 --- a/web/settings/assets/device-aa08fc7f.js +++ b/web/settings/assets/device-6f67126a.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-217340a2.js b/web/settings/assets/device-78972dd5.js similarity index 88% rename from web/settings/assets/device-217340a2.js rename to web/settings/assets/device-78972dd5.js index d32877be23..fa7d27bece 100644 --- a/web/settings/assets/device-217340a2.js +++ b/web/settings/assets/device-78972dd5.js @@ -1 +1 @@ -import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; +import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-9507155a.js b/web/settings/assets/device-79231634.js similarity index 95% rename from web/settings/assets/device-9507155a.js rename to web/settings/assets/device-79231634.js index 904fc8e9db..d7a785caa6 100644 --- a/web/settings/assets/device-9507155a.js +++ b/web/settings/assets/device-79231634.js @@ -1 +1 @@ -import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; +import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-e3c08fb4.js b/web/settings/assets/device-7c1416ae.js similarity index 85% rename from web/settings/assets/device-e3c08fb4.js rename to web/settings/assets/device-7c1416ae.js index 4808812b01..50d112eb61 100644 --- a/web/settings/assets/device-e3c08fb4.js +++ b/web/settings/assets/device-7c1416ae.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e48058b2.js b/web/settings/assets/device-81cfe576.js similarity index 91% rename from web/settings/assets/device-e48058b2.js rename to web/settings/assets/device-81cfe576.js index 0eb032d434..af3889c14d 100644 --- a/web/settings/assets/device-e48058b2.js +++ b/web/settings/assets/device-81cfe576.js @@ -1 +1 @@ -import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; +import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; diff --git a/web/settings/assets/device-a55b29f8.js b/web/settings/assets/device-84ee9f0e.js similarity index 96% rename from web/settings/assets/device-a55b29f8.js rename to web/settings/assets/device-84ee9f0e.js index 0dcf7adaac..054883eed2 100644 --- a/web/settings/assets/device-a55b29f8.js +++ b/web/settings/assets/device-84ee9f0e.js @@ -1 +1 @@ -import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; +import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-ee213d99.js b/web/settings/assets/device-8ad58e8f.js similarity index 89% rename from web/settings/assets/device-ee213d99.js rename to web/settings/assets/device-8ad58e8f.js index c428265fc3..763af6386c 100644 --- a/web/settings/assets/device-ee213d99.js +++ b/web/settings/assets/device-8ad58e8f.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-b78ab975.js b/web/settings/assets/device-a211281f.js similarity index 87% rename from web/settings/assets/device-b78ab975.js rename to web/settings/assets/device-a211281f.js index 695e2c4115..8b7076bd20 100644 --- a/web/settings/assets/device-b78ab975.js +++ b/web/settings/assets/device-a211281f.js @@ -1 +1 @@ -import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; +import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-b9e954eb.js b/web/settings/assets/device-a276a5e8.js similarity index 89% rename from web/settings/assets/device-b9e954eb.js rename to web/settings/assets/device-a276a5e8.js index 5461381fb5..767a601056 100644 --- a/web/settings/assets/device-b9e954eb.js +++ b/web/settings/assets/device-a276a5e8.js @@ -1 +1 @@ -import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; +import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-26d1cd71.js b/web/settings/assets/device-a5d80d29.js similarity index 89% rename from web/settings/assets/device-26d1cd71.js rename to web/settings/assets/device-a5d80d29.js index 38cfd92293..9e0a19b095 100644 --- a/web/settings/assets/device-26d1cd71.js +++ b/web/settings/assets/device-a5d80d29.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-c06281fa.js b/web/settings/assets/device-c06281fa.js new file mode 100644 index 0000000000..8d5f666c76 --- /dev/null +++ b/web/settings/assets/device-c06281fa.js @@ -0,0 +1 @@ +import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-163e7968.js b/web/settings/assets/device-c1fd6c65.js similarity index 87% rename from web/settings/assets/device-163e7968.js rename to web/settings/assets/device-c1fd6c65.js index 82221bf000..8f4b653504 100644 --- a/web/settings/assets/device-163e7968.js +++ b/web/settings/assets/device-c1fd6c65.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-fd68e523.js b/web/settings/assets/device-c35af9f0.js similarity index 87% rename from web/settings/assets/device-fd68e523.js rename to web/settings/assets/device-c35af9f0.js index e13c12424a..b994e4c46e 100644 --- a/web/settings/assets/device-fd68e523.js +++ b/web/settings/assets/device-c35af9f0.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; +import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-7db846be.js b/web/settings/assets/device-c492c79f.js similarity index 89% rename from web/settings/assets/device-7db846be.js rename to web/settings/assets/device-c492c79f.js index 7d4f8b59d8..fcc94e21ab 100644 --- a/web/settings/assets/device-7db846be.js +++ b/web/settings/assets/device-c492c79f.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-cbc50bc1.js b/web/settings/assets/device-c6d8e75d.js similarity index 91% rename from web/settings/assets/device-cbc50bc1.js rename to web/settings/assets/device-c6d8e75d.js index 59db30d11e..753adbf17a 100644 --- a/web/settings/assets/device-cbc50bc1.js +++ b/web/settings/assets/device-c6d8e75d.js @@ -1 +1 @@ -import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; +import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-796f2679.js b/web/settings/assets/device-c8f59f1c.js similarity index 88% rename from web/settings/assets/device-796f2679.js rename to web/settings/assets/device-c8f59f1c.js index c79ed7a5bc..8676c292d5 100644 --- a/web/settings/assets/device-796f2679.js +++ b/web/settings/assets/device-c8f59f1c.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-0ac32d64.js b/web/settings/assets/device-cbfffa6e.js similarity index 91% rename from web/settings/assets/device-0ac32d64.js rename to web/settings/assets/device-cbfffa6e.js index 89f17db744..75c3cfd294 100644 --- a/web/settings/assets/device-0ac32d64.js +++ b/web/settings/assets/device-cbfffa6e.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-007ca4fb.js b/web/settings/assets/device-d36a7958.js similarity index 85% rename from web/settings/assets/device-007ca4fb.js rename to web/settings/assets/device-d36a7958.js index 4c5881ca3e..9ed3e78129 100644 --- a/web/settings/assets/device-007ca4fb.js +++ b/web/settings/assets/device-d36a7958.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e4295529.js b/web/settings/assets/device-d4c2290d.js similarity index 87% rename from web/settings/assets/device-e4295529.js rename to web/settings/assets/device-d4c2290d.js index e08da8fc42..2342259ee1 100644 --- a/web/settings/assets/device-e4295529.js +++ b/web/settings/assets/device-d4c2290d.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-b4c7f099.js b/web/settings/assets/device-dbb2dc55.js similarity index 88% rename from web/settings/assets/device-b4c7f099.js rename to web/settings/assets/device-dbb2dc55.js index 521b7bde7b..2e14fe9705 100644 --- a/web/settings/assets/device-b4c7f099.js +++ b/web/settings/assets/device-dbb2dc55.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-81fa6cad.js b/web/settings/assets/device-e04c8431.js similarity index 85% rename from web/settings/assets/device-81fa6cad.js rename to web/settings/assets/device-e04c8431.js index a9aac097b4..d83337b5db 100644 --- a/web/settings/assets/device-81fa6cad.js +++ b/web/settings/assets/device-e04c8431.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-e85a7920.js b/web/settings/assets/device-e0c91363.js similarity index 90% rename from web/settings/assets/device-e85a7920.js rename to web/settings/assets/device-e0c91363.js index e0334709b4..900ef34521 100644 --- a/web/settings/assets/device-e85a7920.js +++ b/web/settings/assets/device-e0c91363.js @@ -1 +1 @@ -import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; +import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-c7f8802d.js b/web/settings/assets/device-e1c1fe17.js similarity index 86% rename from web/settings/assets/device-c7f8802d.js rename to web/settings/assets/device-e1c1fe17.js index d5474e1bb8..581718d1fc 100644 --- a/web/settings/assets/device-c7f8802d.js +++ b/web/settings/assets/device-e1c1fe17.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-ff40d8e1.js b/web/settings/assets/device-e7707776.js similarity index 89% rename from web/settings/assets/device-ff40d8e1.js rename to web/settings/assets/device-e7707776.js index c5f4cc362d..3a749e7e39 100644 --- a/web/settings/assets/device-ff40d8e1.js +++ b/web/settings/assets/device-e7707776.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-711c4142.js b/web/settings/assets/device-edfb92e7.js similarity index 89% rename from web/settings/assets/device-711c4142.js rename to web/settings/assets/device-edfb92e7.js index ad2c19fc40..efb7a75130 100644 --- a/web/settings/assets/device-711c4142.js +++ b/web/settings/assets/device-edfb92e7.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-d3af1afc.js b/web/settings/assets/device-f0707a59.js similarity index 87% rename from web/settings/assets/device-d3af1afc.js rename to web/settings/assets/device-f0707a59.js index 18222edc2d..80bc330e9c 100644 --- a/web/settings/assets/device-d3af1afc.js +++ b/web/settings/assets/device-f0707a59.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; +import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/device-4674babe.js b/web/settings/assets/device-f915e9e1.js similarity index 85% rename from web/settings/assets/device-4674babe.js rename to web/settings/assets/device-f915e9e1.js index 7ee64aae16..a6efd02532 100644 --- a/web/settings/assets/device-4674babe.js +++ b/web/settings/assets/device-f915e9e1.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-8eeabc14.js b/web/settings/assets/device-fc73a673.js similarity index 87% rename from web/settings/assets/device-8eeabc14.js rename to web/settings/assets/device-fc73a673.js index f3e5130c3a..cf750f0ebe 100644 --- a/web/settings/assets/device-8eeabc14.js +++ b/web/settings/assets/device-fc73a673.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/displayTheme-65aaa96a.js b/web/settings/assets/displayTheme-8212a288.js similarity index 97% rename from web/settings/assets/displayTheme-65aaa96a.js rename to web/settings/assets/displayTheme-8212a288.js index f2ec60b6d9..13ef76ab58 100644 --- a/web/settings/assets/displayTheme-65aaa96a.js +++ b/web/settings/assets/displayTheme-8212a288.js @@ -1,4 +1,4 @@ -import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" +import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" [a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-3a87b7e0.js b/web/settings/assets/external_inverter-12a71401.js similarity index 86% rename from web/settings/assets/external_inverter-3a87b7e0.js rename to web/settings/assets/external_inverter-12a71401.js index d6607774c8..7420329e8a 100644 --- a/web/settings/assets/external_inverter-3a87b7e0.js +++ b/web/settings/assets/external_inverter-12a71401.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-79f2751a.js b/web/settings/assets/external_inverter-266d661e.js similarity index 92% rename from web/settings/assets/external_inverter-79f2751a.js rename to web/settings/assets/external_inverter-266d661e.js index 46e509d37f..f7bde3627e 100644 --- a/web/settings/assets/external_inverter-79f2751a.js +++ b/web/settings/assets/external_inverter-266d661e.js @@ -1 +1 @@ -import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; +import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/index-b772b3e8.js b/web/settings/assets/index-7f257223.js similarity index 87% rename from web/settings/assets/index-b772b3e8.js rename to web/settings/assets/index-7f257223.js index ed1e678ff0..72fd16f28c 100644 --- a/web/settings/assets/index-b772b3e8.js +++ b/web/settings/assets/index-7f257223.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-2f9e22dd.js"),["assets/Status-2f9e22dd.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-70fa4b12.js"),["assets/ChargeLog-70fa4b12.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-bf76fb9e.js"),["assets/Chart-bf76fb9e.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-4871098e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-abdd6c9a.js"),["assets/GeneralConfig-abdd6c9a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-6ef77f4c.js"),["assets/OptionalComponents-6ef77f4c.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ff9f0666.js"),["assets/GeneralChargeConfig-ff9f0666.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3c9fe452.js"),["assets/InstantChargeConfig-3c9fe452.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-04e8c577.js"),["assets/PVChargeConfig-04e8c577.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-8875b0c6.js"),["assets/TimeChargeConfig-8875b0c6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-f93a9bf5.js"),["assets/ScheduledChargeConfig-f93a9bf5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-4752ed0c.js"),["assets/HardwareInstallation-4752ed0c.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-2faefad8.js"),["assets/LoadManagementConfig-2faefad8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-91778edb.js"),["assets/ChargePointInstallation-91778edb.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-7ad05e57.js"),["assets/VehicleConfig-7ad05e57.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-e240cf70.js"),["assets/CloudConfig-e240cf70.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-dc2c20af.js"),["assets/MqttBridgeConfig-dc2c20af.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-7f3e104b.js"),["assets/DebugConfig-7f3e104b.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-007f9ec4.js"),["assets/Support-007f9ec4.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f8408734.js"),["assets/LegalSettings-f8408734.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-fff94d77.js"),["assets/System-fff94d77.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-03e74cdc.js"),["assets/DataManagement-03e74cdc.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-73fc83a0.js"),["assets/TestingStore-73fc83a0.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-6e5b23b4.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import{p as Ee,a as Ae}from"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-jquery-921f231b.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-5b447ae3.js"),["assets/Status-5b447ae3.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-5f30bcb4.js"),["assets/ChargeLog-5f30bcb4.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-49b639b4.js"),["assets/Chart-49b639b4.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-5f622c20.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-36423866.js"),["assets/GeneralConfig-36423866.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-56f649f3.js"),["assets/OptionalComponents-56f649f3.js","assets/dynamic-import-helper-be004503.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ac29a689.js"),["assets/GeneralChargeConfig-ac29a689.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-05d4f732.js"),["assets/InstantChargeConfig-05d4f732.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-233c1da7.js"),["assets/PVChargeConfig-233c1da7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-d8158fc9.js"),["assets/TimeChargeConfig-d8158fc9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-3d69a67b.js"),["assets/ScheduledChargeConfig-3d69a67b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-7f988a97.js"),["assets/HardwareInstallation-7f988a97.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-bbe234ca.js"),["assets/LoadManagementConfig-bbe234ca.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-db92c83c.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-47aec5b8.js"),["assets/ChargePointInstallation-47aec5b8.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-64d2df77.js"),["assets/VehicleConfig-64d2df77.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-da9d6c5e.js"),["assets/CloudConfig-da9d6c5e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-152c967f.js"),["assets/MqttBridgeConfig-152c967f.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-ddbc648b.js"),["assets/DebugConfig-ddbc648b.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-6b29d3b0.js"),["assets/Support-6b29d3b0.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-0aa17b31.js"),["assets/LegalSettings-0aa17b31.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-57179bf7.js"),["assets/System-57179bf7.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8a02aa30.js"),["assets/DataManagement-8a02aa30.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-06f9cd00.js"),["assets/TestingStore-06f9cd00.js","assets/OpenwbSortableList-db92c83c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-ef72abc7.js b/web/settings/assets/inverter-012c416a.js similarity index 89% rename from web/settings/assets/inverter-ef72abc7.js rename to web/settings/assets/inverter-012c416a.js index 77236ceee3..09304b6836 100644 --- a/web/settings/assets/inverter-ef72abc7.js +++ b/web/settings/assets/inverter-012c416a.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-066b9c17.js b/web/settings/assets/inverter-066b9c17.js new file mode 100644 index 0000000000..29e2ef476e --- /dev/null +++ b/web/settings/assets/inverter-066b9c17.js @@ -0,0 +1 @@ +import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-3849924d.js b/web/settings/assets/inverter-0748897a.js similarity index 94% rename from web/settings/assets/inverter-3849924d.js rename to web/settings/assets/inverter-0748897a.js index 791a9d7229..4bd869058c 100644 --- a/web/settings/assets/inverter-3849924d.js +++ b/web/settings/assets/inverter-0748897a.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; +import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-ac056d1d.js b/web/settings/assets/inverter-127bad9a.js similarity index 86% rename from web/settings/assets/inverter-ac056d1d.js rename to web/settings/assets/inverter-127bad9a.js index c5c31e2201..33d1decdad 100644 --- a/web/settings/assets/inverter-ac056d1d.js +++ b/web/settings/assets/inverter-127bad9a.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-dfa572d8.js b/web/settings/assets/inverter-141492ab.js similarity index 86% rename from web/settings/assets/inverter-dfa572d8.js rename to web/settings/assets/inverter-141492ab.js index 3db6b50d8a..1890403275 100644 --- a/web/settings/assets/inverter-dfa572d8.js +++ b/web/settings/assets/inverter-141492ab.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a8d17a4e.js b/web/settings/assets/inverter-142e36fb.js similarity index 88% rename from web/settings/assets/inverter-a8d17a4e.js rename to web/settings/assets/inverter-142e36fb.js index 065cbd634e..e09afe7c68 100644 --- a/web/settings/assets/inverter-a8d17a4e.js +++ b/web/settings/assets/inverter-142e36fb.js @@ -1 +1 @@ -import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const M=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{M as default}; +import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const M=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-d4107377.js b/web/settings/assets/inverter-1d15d663.js similarity index 86% rename from web/settings/assets/inverter-d4107377.js rename to web/settings/assets/inverter-1d15d663.js index b90ea78ff9..bdf7cfa439 100644 --- a/web/settings/assets/inverter-d4107377.js +++ b/web/settings/assets/inverter-1d15d663.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-0f04bc4e.js b/web/settings/assets/inverter-1e116570.js similarity index 88% rename from web/settings/assets/inverter-0f04bc4e.js rename to web/settings/assets/inverter-1e116570.js index bc4dfb6650..ce01026b4d 100644 --- a/web/settings/assets/inverter-0f04bc4e.js +++ b/web/settings/assets/inverter-1e116570.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{M as default}; +import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{M as default}; diff --git a/web/settings/assets/inverter-e440b330.js b/web/settings/assets/inverter-1e818ed4.js similarity index 86% rename from web/settings/assets/inverter-e440b330.js rename to web/settings/assets/inverter-1e818ed4.js index 95ae64efc8..2e70c46d85 100644 --- a/web/settings/assets/inverter-e440b330.js +++ b/web/settings/assets/inverter-1e818ed4.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-6bf21593.js b/web/settings/assets/inverter-1e83ea2a.js similarity index 90% rename from web/settings/assets/inverter-6bf21593.js rename to web/settings/assets/inverter-1e83ea2a.js index 8c42d41b58..f3b124cf63 100644 --- a/web/settings/assets/inverter-6bf21593.js +++ b/web/settings/assets/inverter-1e83ea2a.js @@ -1 +1 @@ -import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; +import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-89f2126b.js b/web/settings/assets/inverter-238294f2.js similarity index 86% rename from web/settings/assets/inverter-89f2126b.js rename to web/settings/assets/inverter-238294f2.js index f31e7ddf8a..9038658e01 100644 --- a/web/settings/assets/inverter-89f2126b.js +++ b/web/settings/assets/inverter-238294f2.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-1bbefb9c.js b/web/settings/assets/inverter-25c50f0a.js similarity index 91% rename from web/settings/assets/inverter-1bbefb9c.js rename to web/settings/assets/inverter-25c50f0a.js index 4731285318..ea2c005d37 100644 --- a/web/settings/assets/inverter-1bbefb9c.js +++ b/web/settings/assets/inverter-25c50f0a.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-eee1527f.js b/web/settings/assets/inverter-2cb1f91b.js similarity index 93% rename from web/settings/assets/inverter-eee1527f.js rename to web/settings/assets/inverter-2cb1f91b.js index 723c93d562..536a7b5ddc 100644 --- a/web/settings/assets/inverter-eee1527f.js +++ b/web/settings/assets/inverter-2cb1f91b.js @@ -1 +1 @@ -import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; +import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-36547adc.js b/web/settings/assets/inverter-2cf514ef.js similarity index 95% rename from web/settings/assets/inverter-36547adc.js rename to web/settings/assets/inverter-2cf514ef.js index 060f8137ae..9b62b51dc4 100644 --- a/web/settings/assets/inverter-36547adc.js +++ b/web/settings/assets/inverter-2cf514ef.js @@ -1 +1 @@ -import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; +import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-33d71d7c.js b/web/settings/assets/inverter-3e75383d.js similarity index 87% rename from web/settings/assets/inverter-33d71d7c.js rename to web/settings/assets/inverter-3e75383d.js index 7ecd763815..7ceeb657d9 100644 --- a/web/settings/assets/inverter-33d71d7c.js +++ b/web/settings/assets/inverter-3e75383d.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-bc58fc73.js b/web/settings/assets/inverter-40527e01.js similarity index 91% rename from web/settings/assets/inverter-bc58fc73.js rename to web/settings/assets/inverter-40527e01.js index 7071a6d434..0d25ca6a93 100644 --- a/web/settings/assets/inverter-bc58fc73.js +++ b/web/settings/assets/inverter-40527e01.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; diff --git a/web/settings/assets/inverter-fabd24ac.js b/web/settings/assets/inverter-4355b01b.js similarity index 86% rename from web/settings/assets/inverter-fabd24ac.js rename to web/settings/assets/inverter-4355b01b.js index fdb5cb6c83..20120750bc 100644 --- a/web/settings/assets/inverter-fabd24ac.js +++ b/web/settings/assets/inverter-4355b01b.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; +import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-44c0f415.js b/web/settings/assets/inverter-44c0f415.js new file mode 100644 index 0000000000..37a506133a --- /dev/null +++ b/web/settings/assets/inverter-44c0f415.js @@ -0,0 +1 @@ +import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-5c832d19.js b/web/settings/assets/inverter-4cef121f.js similarity index 86% rename from web/settings/assets/inverter-5c832d19.js rename to web/settings/assets/inverter-4cef121f.js index 9f060f7911..a852171a87 100644 --- a/web/settings/assets/inverter-5c832d19.js +++ b/web/settings/assets/inverter-4cef121f.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-26fc0c4d.js b/web/settings/assets/inverter-502f629e.js similarity index 94% rename from web/settings/assets/inverter-26fc0c4d.js rename to web/settings/assets/inverter-502f629e.js index 9e11086067..dd31542d34 100644 --- a/web/settings/assets/inverter-26fc0c4d.js +++ b/web/settings/assets/inverter-502f629e.js @@ -1 +1 @@ -import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; +import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; diff --git a/web/settings/assets/inverter-106f6b2a.js b/web/settings/assets/inverter-5231c6c2.js similarity index 88% rename from web/settings/assets/inverter-106f6b2a.js rename to web/settings/assets/inverter-5231c6c2.js index 1617183fe2..7d5d6d6717 100644 --- a/web/settings/assets/inverter-106f6b2a.js +++ b/web/settings/assets/inverter-5231c6c2.js @@ -1 +1 @@ -import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-a3407794.js b/web/settings/assets/inverter-5378e193.js similarity index 93% rename from web/settings/assets/inverter-a3407794.js rename to web/settings/assets/inverter-5378e193.js index 3f550fa359..7c2d4c7c6d 100644 --- a/web/settings/assets/inverter-a3407794.js +++ b/web/settings/assets/inverter-5378e193.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-a15db0a0.js b/web/settings/assets/inverter-5952b75a.js similarity index 86% rename from web/settings/assets/inverter-a15db0a0.js rename to web/settings/assets/inverter-5952b75a.js index 14483399cb..3667ee71e5 100644 --- a/web/settings/assets/inverter-a15db0a0.js +++ b/web/settings/assets/inverter-5952b75a.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-00a09c36.js b/web/settings/assets/inverter-5cf7f4ea.js similarity index 86% rename from web/settings/assets/inverter-00a09c36.js rename to web/settings/assets/inverter-5cf7f4ea.js index e05937a5d2..43fb6bf88e 100644 --- a/web/settings/assets/inverter-00a09c36.js +++ b/web/settings/assets/inverter-5cf7f4ea.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-78f559db.js b/web/settings/assets/inverter-766499df.js similarity index 86% rename from web/settings/assets/inverter-78f559db.js rename to web/settings/assets/inverter-766499df.js index f386c68fa0..f19330a085 100644 --- a/web/settings/assets/inverter-78f559db.js +++ b/web/settings/assets/inverter-766499df.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-151fa9c5.js b/web/settings/assets/inverter-7b30173d.js similarity index 86% rename from web/settings/assets/inverter-151fa9c5.js rename to web/settings/assets/inverter-7b30173d.js index 84dce4f5a7..4161f15516 100644 --- a/web/settings/assets/inverter-151fa9c5.js +++ b/web/settings/assets/inverter-7b30173d.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-6f9c66d1.js b/web/settings/assets/inverter-7ff062ac.js similarity index 90% rename from web/settings/assets/inverter-6f9c66d1.js rename to web/settings/assets/inverter-7ff062ac.js index 46524a5800..ea1c91ce2f 100644 --- a/web/settings/assets/inverter-6f9c66d1.js +++ b/web/settings/assets/inverter-7ff062ac.js @@ -1 +1 @@ -import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-ab71cc4b.js b/web/settings/assets/inverter-902f3710.js similarity index 90% rename from web/settings/assets/inverter-ab71cc4b.js rename to web/settings/assets/inverter-902f3710.js index b5a971efde..f2d2c4bf5b 100644 --- a/web/settings/assets/inverter-ab71cc4b.js +++ b/web/settings/assets/inverter-902f3710.js @@ -1 +1 @@ -import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,h,M,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{D as default}; +import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,h,M,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{D as default}; diff --git a/web/settings/assets/inverter-695b5c53.js b/web/settings/assets/inverter-90f3d72b.js similarity index 86% rename from web/settings/assets/inverter-695b5c53.js rename to web/settings/assets/inverter-90f3d72b.js index b27b779c18..e16fa1ada9 100644 --- a/web/settings/assets/inverter-695b5c53.js +++ b/web/settings/assets/inverter-90f3d72b.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-9b9fe63d.js b/web/settings/assets/inverter-9b9fe63d.js deleted file mode 100644 index aebb5ff9a0..0000000000 --- a/web/settings/assets/inverter-9b9fe63d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-b84b910e.js b/web/settings/assets/inverter-9f25c7b8.js similarity index 86% rename from web/settings/assets/inverter-b84b910e.js rename to web/settings/assets/inverter-9f25c7b8.js index c525e55747..cfd8873a22 100644 --- a/web/settings/assets/inverter-b84b910e.js +++ b/web/settings/assets/inverter-9f25c7b8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-d426b124.js b/web/settings/assets/inverter-9fe0373f.js similarity index 86% rename from web/settings/assets/inverter-d426b124.js rename to web/settings/assets/inverter-9fe0373f.js index a29ebc9021..9d8caebeec 100644 --- a/web/settings/assets/inverter-d426b124.js +++ b/web/settings/assets/inverter-9fe0373f.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-47ad48de.js b/web/settings/assets/inverter-a2fbbf7f.js similarity index 90% rename from web/settings/assets/inverter-47ad48de.js rename to web/settings/assets/inverter-a2fbbf7f.js index 01561d6818..ee0ee5c23a 100644 --- a/web/settings/assets/inverter-47ad48de.js +++ b/web/settings/assets/inverter-a2fbbf7f.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-239362ff.js b/web/settings/assets/inverter-a66f1636.js similarity index 89% rename from web/settings/assets/inverter-239362ff.js rename to web/settings/assets/inverter-a66f1636.js index c0f3b25a9b..8d9acea4bf 100644 --- a/web/settings/assets/inverter-239362ff.js +++ b/web/settings/assets/inverter-a66f1636.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; +import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a6ddec85.js b/web/settings/assets/inverter-b1fa892a.js similarity index 93% rename from web/settings/assets/inverter-a6ddec85.js rename to web/settings/assets/inverter-b1fa892a.js index f158c171cb..ef63e13708 100644 --- a/web/settings/assets/inverter-a6ddec85.js +++ b/web/settings/assets/inverter-b1fa892a.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-3639b6ee.js b/web/settings/assets/inverter-b4097339.js similarity index 88% rename from web/settings/assets/inverter-3639b6ee.js rename to web/settings/assets/inverter-b4097339.js index 05ee6f6f82..6a3ce6838b 100644 --- a/web/settings/assets/inverter-3639b6ee.js +++ b/web/settings/assets/inverter-b4097339.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-c3c11140.js b/web/settings/assets/inverter-c1bf7cde.js similarity index 93% rename from web/settings/assets/inverter-c3c11140.js rename to web/settings/assets/inverter-c1bf7cde.js index 398238d4d9..d90651cbbd 100644 --- a/web/settings/assets/inverter-c3c11140.js +++ b/web/settings/assets/inverter-c1bf7cde.js @@ -1 +1 @@ -import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; +import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; diff --git a/web/settings/assets/inverter-832936bd.js b/web/settings/assets/inverter-c21d2035.js similarity index 86% rename from web/settings/assets/inverter-832936bd.js rename to web/settings/assets/inverter-c21d2035.js index 5926302de8..270f5a15d8 100644 --- a/web/settings/assets/inverter-832936bd.js +++ b/web/settings/assets/inverter-c21d2035.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; +import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-0769e573.js b/web/settings/assets/inverter-c53f4fbf.js similarity index 93% rename from web/settings/assets/inverter-0769e573.js rename to web/settings/assets/inverter-c53f4fbf.js index c566d5a3f3..eea18479e8 100644 --- a/web/settings/assets/inverter-0769e573.js +++ b/web/settings/assets/inverter-c53f4fbf.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-67becac8.js b/web/settings/assets/inverter-c87e2737.js similarity index 86% rename from web/settings/assets/inverter-67becac8.js rename to web/settings/assets/inverter-c87e2737.js index f31a14d1b4..28c1aba0af 100644 --- a/web/settings/assets/inverter-67becac8.js +++ b/web/settings/assets/inverter-c87e2737.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; +import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-e06fd605.js b/web/settings/assets/inverter-cbe3f201.js similarity index 93% rename from web/settings/assets/inverter-e06fd605.js rename to web/settings/assets/inverter-cbe3f201.js index b438a6492e..af525f77dc 100644 --- a/web/settings/assets/inverter-e06fd605.js +++ b/web/settings/assets/inverter-cbe3f201.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-23c62af1.js b/web/settings/assets/inverter-e45e304e.js similarity index 86% rename from web/settings/assets/inverter-23c62af1.js rename to web/settings/assets/inverter-e45e304e.js index 23da21c34d..faae925257 100644 --- a/web/settings/assets/inverter-23c62af1.js +++ b/web/settings/assets/inverter-e45e304e.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7c9d893d.js b/web/settings/assets/inverter-e4d3cc40.js similarity index 86% rename from web/settings/assets/inverter-7c9d893d.js rename to web/settings/assets/inverter-e4d3cc40.js index 0711668c70..e5364c7fee 100644 --- a/web/settings/assets/inverter-7c9d893d.js +++ b/web/settings/assets/inverter-e4d3cc40.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-1bcb55bc.js b/web/settings/assets/inverter-ebb193da.js similarity index 86% rename from web/settings/assets/inverter-1bcb55bc.js rename to web/settings/assets/inverter-ebb193da.js index 7e14b7af69..ec769a4d45 100644 --- a/web/settings/assets/inverter-1bcb55bc.js +++ b/web/settings/assets/inverter-ebb193da.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-b8fdf4a4.js b/web/settings/assets/inverter-eff782b7.js similarity index 86% rename from web/settings/assets/inverter-b8fdf4a4.js rename to web/settings/assets/inverter-eff782b7.js index 4587cdda05..1efc7a67cb 100644 --- a/web/settings/assets/inverter-b8fdf4a4.js +++ b/web/settings/assets/inverter-eff782b7.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/vehicle-d98ffef7.js b/web/settings/assets/vehicle-20cc743a.js similarity index 92% rename from web/settings/assets/vehicle-d98ffef7.js rename to web/settings/assets/vehicle-20cc743a.js index 1c45284b40..d9435a7876 100644 --- a/web/settings/assets/vehicle-d98ffef7.js +++ b/web/settings/assets/vehicle-20cc743a.js @@ -1 +1 @@ -import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; +import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-8923672d.js b/web/settings/assets/vehicle-4b3522a6.js similarity index 94% rename from web/settings/assets/vehicle-8923672d.js rename to web/settings/assets/vehicle-4b3522a6.js index 210ed20caa..ad0b37fb10 100644 --- a/web/settings/assets/vehicle-8923672d.js +++ b/web/settings/assets/vehicle-4b3522a6.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-b772b3e8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-6e5b23b4.js";import{a as y}from"./vendor-axios-86f7a224.js";import{C}from"./index-7f257223.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-56b3de10.js b/web/settings/assets/vehicle-4b98a311.js similarity index 91% rename from web/settings/assets/vehicle-56b3de10.js rename to web/settings/assets/vehicle-4b98a311.js index 9ddb4d1029..f17a6b3c08 100644 --- a/web/settings/assets/vehicle-56b3de10.js +++ b/web/settings/assets/vehicle-4b98a311.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; +import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-391df8d0.js b/web/settings/assets/vehicle-50dd5eb2.js similarity index 93% rename from web/settings/assets/vehicle-391df8d0.js rename to web/settings/assets/vehicle-50dd5eb2.js index f98d236dd5..c186904a04 100644 --- a/web/settings/assets/vehicle-391df8d0.js +++ b/web/settings/assets/vehicle-50dd5eb2.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-75667aad.js b/web/settings/assets/vehicle-575fb854.js similarity index 91% rename from web/settings/assets/vehicle-75667aad.js rename to web/settings/assets/vehicle-575fb854.js index ebf206244a..4a7f939b3c 100644 --- a/web/settings/assets/vehicle-75667aad.js +++ b/web/settings/assets/vehicle-575fb854.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-67509117.js b/web/settings/assets/vehicle-6c139591.js similarity index 95% rename from web/settings/assets/vehicle-67509117.js rename to web/settings/assets/vehicle-6c139591.js index 97b35b86e0..03ee49a7d2 100644 --- a/web/settings/assets/vehicle-67509117.js +++ b/web/settings/assets/vehicle-6c139591.js @@ -1 +1 @@ -import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; +import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; diff --git a/web/settings/assets/vehicle-4249fcff.js b/web/settings/assets/vehicle-7cd93604.js similarity index 95% rename from web/settings/assets/vehicle-4249fcff.js rename to web/settings/assets/vehicle-7cd93604.js index 803c7cb43e..fd95f8339f 100644 --- a/web/settings/assets/vehicle-4249fcff.js +++ b/web/settings/assets/vehicle-7cd93604.js @@ -1 +1 @@ -import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; +import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-df2230d5.js b/web/settings/assets/vehicle-85f19442.js similarity index 92% rename from web/settings/assets/vehicle-df2230d5.js rename to web/settings/assets/vehicle-85f19442.js index 6f35bd66e7..520a821568 100644 --- a/web/settings/assets/vehicle-df2230d5.js +++ b/web/settings/assets/vehicle-85f19442.js @@ -1 +1 @@ -import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; +import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; diff --git a/web/settings/assets/vehicle-d1763e7a.js b/web/settings/assets/vehicle-c5a65e75.js similarity index 93% rename from web/settings/assets/vehicle-d1763e7a.js rename to web/settings/assets/vehicle-c5a65e75.js index 78b28885c3..5a99229761 100644 --- a/web/settings/assets/vehicle-d1763e7a.js +++ b/web/settings/assets/vehicle-c5a65e75.js @@ -1 +1 @@ -import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-0b6d061a.js b/web/settings/assets/vehicle-e146fe0e.js similarity index 90% rename from web/settings/assets/vehicle-0b6d061a.js rename to web/settings/assets/vehicle-e146fe0e.js index 6ff1830e18..d484e08c0c 100644 --- a/web/settings/assets/vehicle-0b6d061a.js +++ b/web/settings/assets/vehicle-e146fe0e.js @@ -1 +1 @@ -import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; +import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-7df8b393.js b/web/settings/assets/vehicle-e377a977.js similarity index 94% rename from web/settings/assets/vehicle-7df8b393.js rename to web/settings/assets/vehicle-e377a977.js index 845b81bbfa..17e454bf0b 100644 --- a/web/settings/assets/vehicle-7df8b393.js +++ b/web/settings/assets/vehicle-e377a977.js @@ -1 +1 @@ -import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; +import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-a27fc177.js b/web/settings/assets/vehicle-e76a744b.js similarity index 91% rename from web/settings/assets/vehicle-a27fc177.js rename to web/settings/assets/vehicle-e76a744b.js index 38516552ed..9d126ba4c7 100644 --- a/web/settings/assets/vehicle-a27fc177.js +++ b/web/settings/assets/vehicle-e76a744b.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-b9c60ee5.js b/web/settings/assets/vehicle-eb74ae86.js similarity index 91% rename from web/settings/assets/vehicle-b9c60ee5.js rename to web/settings/assets/vehicle-eb74ae86.js index 571f5dfcf4..14029bd245 100644 --- a/web/settings/assets/vehicle-b9c60ee5.js +++ b/web/settings/assets/vehicle-eb74ae86.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vendor-59c39d33.js b/web/settings/assets/vendor-59c39d33.js deleted file mode 100644 index d563139a61..0000000000 --- a/web/settings/assets/vendor-59c39d33.js +++ /dev/null @@ -1,100 +0,0 @@ -import{r as I4}from"./vendor-sortablejs-1a35b5ad.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},sh={};sh.byteLength=B4;sh.toByteArray=N4;sh.fromByteArray=D4;var Xi=[],ui=[],P4=typeof Uint8Array<"u"?Uint8Array:Array,Ic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,C4=Ic.length;Ca0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function B4(e){var t=Uw(e),r=t[0],i=t[1];return(r+i)*3/4-i}function L4(e,t,r){return(t+r)*3/4-r}function N4(e){var t,r=Uw(e),i=r[0],a=r[1],n=new P4(L4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function k4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function $4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */(function(e){var t=sh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Hw={exports:{}},rr=Hw.exports={},Gi,Yi;function P0(){throw new Error("setTimeout has not been defined")}function C0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=P0}catch{Gi=P0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=C0}catch{Yi=C0}})();function qw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===P0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function F4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===C0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,zo,il=-1;function j4(){!za||!zo||(za=!1,zo.length?In=zo.concat(In):il=-1,In.length&&Ww())}function Ww(){if(!za){var e=qw(j4);za=!0;for(var t=In.length;t;){for(zo=In,In=[];++il1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},Vw=()=>!1,q4=/^on[^a-z]/,Ps=e=>q4.test(e),xl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W4=Object.prototype.hasOwnProperty,wt=(e,t)=>W4.call(e,t),ze=Array.isArray,Jo=e=>Cs(e)==="[object Map]",va=e=>Cs(e)==="[object Set]",fm=e=>Cs(e)==="[object Date]",K4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",fh=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),zw=Object.prototype.toString,Cs=e=>zw.call(e),nv=e=>Cs(e).slice(8,-1),Gw=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),V4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),uh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},z4=/-(\w)/g,Kr=uh(e=>e.replace(z4,(t,r)=>r?r.toUpperCase():"")),G4=/\B([A-Z])/g,Hr=uh(e=>e.replace(G4,"-$1").toLowerCase()),_o=uh(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=uh(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Rl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Al=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let um;const Tl=()=>um||(um=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),Y4="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",Z4=Kn(Y4);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(J4);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===zw||!Qe(e.toString))?JSON.stringify(e,Zw,2):String(e),Zw=(e,t)=>t&&t.__v_isRef?Zw(e,t.value):Jo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:va(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Gw(t)?String(t):t;function Ol(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Ol("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},e2=e=>(e.w&So)>0,t2=e=>(e.n&So)>0,lE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"delete":ze(e)||(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"set":Jo(e)&&c.push(u.get(Qo));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&N0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);N0(sv(m),d)}}function N0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&hm(i,t);for(const i of r)i.computed||hm(i,t)}function hm(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function pE(e,t){var r;return(r=Il.get(e))==null?void 0:r.get(t)}const vE=Kn("__proto__,__v_isRef,__isVue"),n2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),gE=hh(),mE=hh(!1,!0),yE=hh(!0),bE=hh(!0,!0),cm=wE();function wE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ga();const i=lt(this)[t].apply(this,r);return ma(),i}}),e}function _E(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function hh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?c2:h2:t?l2:u2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(cm,a))return Reflect.get(cm,a,n);if(a==="hasOwnProperty")return _E}const c=Reflect.get(i,a,n);return(Uf(a)?n2.has(a):vE(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?lv(c):ya(c):c}}const ME=o2(),SE=o2(!0);function o2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,ch=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=ch(a),c=i?fv:r?cv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",Qo),Reflect.get(e,"size",e)}function dm(e){e=lt(e);const t=lt(this);return ch(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function pm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=ch(r);let n=i.call(r,e);n?f2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function vm(e){const t=lt(this),{has:r,get:i}=ch(t);let a=r.call(t,e);a?f2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function gm(){const e=lt(this),t=e.size!==0,r=Jo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?cv:Wf;return!e&&Tr(c,"iterate",Qo),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Jo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?cv:Wf;return!t&&Tr(n,"iterate",d?L0:Qo),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function OE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[IE,PE,CE,BE]=OE();function dh(e,t){const r=t?e?BE:CE:e?PE:IE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const LE={get:dh(!1,!1)},NE={get:dh(!1,!0)},kE={get:dh(!0,!1)},$E={get:dh(!0,!0)};function f2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 u2=new WeakMap,l2=new WeakMap,h2=new WeakMap,c2=new WeakMap;function DE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function FE(e){return e.__v_skip||!Object.isExtensible(e)?0:DE(nv(e))}function ya(e){return Ln(e)?e:ph(e,!1,a2,LE,u2)}function uv(e){return ph(e,!1,AE,NE,l2)}function lv(e){return ph(e,!0,s2,kE,h2)}function Wa(e){return ph(e,!0,TE,$E,c2)}function ph(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=FE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function hv(e){return El(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?ya(e):e,cv=e=>Rt(e)?lv(e):e;function dv(e){co&&Br&&(e=lt(e),i2(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function vh(e,t){e=lt(e);const r=e.dep;r&&N0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return p2(e,!1)}function d2(e){return p2(e,!0)}function p2(e,t){return Xt(e)?e:new jE(e,t)}class jE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return dv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),vh(this,t))}}function UE(e){vh(e,e.value)}function vo(e){return Xt(e)?e.value:e}function HE(e){return Qe(e)?e():vo(e)}const qE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function pv(e){return po(e)?e:new Proxy(e,qE)}class WE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>dv(this),()=>vh(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function KE(e){return new WE(e)}function VE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=v2(e,r);return t}class zE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pE(lt(this._object),this._key)}}class GE{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function YE(e,t,r){return Xt(e)?e:Qe(e)?new GE(e):Rt(e)&&arguments.length>1?v2(e,t,r):mr(e)}function v2(e,t,r){const i=e[t];return Xt(i)?i:new zE(e,t,r)}class ZE{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,vh(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return dv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function XE(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new ZE(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ea=[];function Tf(e){ea.push(e)}function Of(){ea.pop()}function Ue(e,...t){ga();const r=ea.length?ea[ea.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=JE();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Rh(r,n.type)}>`).join(` -`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(` -`,...QE(a)),console.warn(...n)}ma()}function JE(){let e=ea[ea.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function QE(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[` -`],...e8(r))}),t}function e8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Rh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...t8(e.props),n]:[a+n]}function t8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...g2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function g2(e,t,r){return Vt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:Xt(t)?(t=g2(e,lt(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=lt(t),r?t:[`${e}=`,t])}function vv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const gv={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. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function en(e,t,r,i){let a;try{a=i?e(...i):e()}catch(n){ba(n,t,r)}return a}function Zr(e,t,r,i){if(Qe(e)){const n=en(e,t,r,i);return n&&fh(n)&&n.catch(u=>{ba(u,t,r)}),n}const a=[];for(let n=0;n>>1;Vf(Er[i])Ji&&Er.splice(t,1)}function gh(e){ze(e)?Ya.push(...e):(!zi||!zi.includes(e,e.allowRecurse?io+1:io))&&Ya.push(e),y2()}function mm(e,t=Kf?Ji+1:0){for(e=e||new Map;tVf(r)-Vf(i)),io=0;ioe.id==null?1/0:e.id,a8=(e,t)=>{const r=Vf(e)-Vf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function b2(e){k0=!1,Kf=!0,e=e||new Map,Er.sort(a8);const t=r=>yv(e,r);try{for(Ji=0;Jii8){const i=t.ownerInstance,a=i&&Xf(i.type);return Ue(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. 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.`),!0}else e.set(t,r+1)}}let go=!1;const ja=new Set;Tl().__VUE_HMR_RUNTIME__={createRecord:Pc(w2),rerender:Pc(u8),reload:Pc(l8)};const aa=new Map;function s8(e){const t=e.type.__hmrId;let r=aa.get(t);r||(w2(t,e.type),r=aa.get(t)),r.instances.add(e)}function f8(e){aa.get(e.type.__hmrId).instances.delete(e)}function w2(e,t){return aa.has(e)?!1:(aa.set(e,{initialDef:If(t),instances:new Set}),!0)}function If(e){return p_(e)?e.__vccOpts:e}function u8(e,t){const r=aa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,If(i.type).render=t),i.renderCache=[],go=!0,i.update(),go=!1}))}function l8(e,t){const r=aa.get(e);if(!r)return;t=If(t),ym(r.initialDef,t);const i=[...r.instances];for(const a of i){const n=If(a.type);ja.has(n)||(n!==r.initialDef&&ym(n,t),ja.add(n)),a.appContext.propsCache.delete(a.type),a.appContext.emitsCache.delete(a.type),a.appContext.optionsCache.delete(a.type),a.ceReload?(ja.add(n),a.ceReload(t.styles),ja.delete(n)):a.parent?lu(a.parent.update):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}gh(()=>{for(const a of i)ja.delete(If(a.type))})}function ym(e,t){Pt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Pc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bi,wf=[],$0=!1;function hu(e,...t){Bi?Bi.emit(e,...t):$0||wf.push({event:e,args:t})}function bv(e,t){var r,i;Bi=e,Bi?(Bi.enabled=!0,wf.forEach(({event:a,args:n})=>Bi.emit(a,...n)),wf=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{bv(n,t)}),setTimeout(()=>{Bi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,$0=!0,wf=[])},3e3)):($0=!0,wf=[])}function h8(e,t){hu("app:init",e,t,{Fragment:Lt,Text:xo,Comment:tr,Static:mo})}function c8(e){hu("app:unmount",e)}const D0=wv("component:added"),_2=wv("component:updated"),d8=wv("component:removed"),p8=e=>{Bi&&typeof Bi.cleanupBuffer=="function"&&!Bi.cleanupBuffer(e)&&d8(e)};function wv(e){return t=>{hu(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const v8=M2("perf:start"),g8=M2("perf:end");function M2(e){return(t,r,i)=>{hu(e,t.appContext.app,t.uid,t,r,i)}}function m8(e,t,r){hu("component:emit",e.appContext.app,e,t,r)}function y8(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||$t;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(xn(t)in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${xn(t)}" prop.`);else{const R=M[t];Qe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),u=n&&t.slice(7);if(u&&u in i){const M=`${u==="modelValue"?"model":u}Modifiers`,{number:S,trim:R}=i[M]||$t;R&&(a=r.map(C=>Vt(C)?C.trim():C)),S&&(a=r.map(Rl))}m8(e,t,a);{const M=t.toLowerCase();M!==t&&i[xn(M)]&&Ue(`Event "${M}" is emitted in component ${Rh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Hr(t)}" instead of "${t}".`)}let c,d=i[c=xn(t)]||i[c=xn(Kr(t))];!d&&n&&(d=i[c=xn(Hr(t))]),d&&Zr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Zr(m,e,6,a)}}function S2(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let u={},c=!1;if(!Qe(e)){const d=m=>{const M=S2(m,t,!0);M&&(c=!0,Pt(u,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>u[d]=null):Pt(u,n),Rt(e)&&i.set(e,u),u)}function mh(e,t){return!e||!Ps(t)?!1:(t=t.slice(2).replace(/Once$/,""),wt(e,t[0].toLowerCase()+t.slice(1))||wt(e,Hr(t))||wt(e,t))}let er=null,yh=null;function zf(e){const t=er;return er=e,yh=e&&e.type.__scopeId||null,t}function x2(e){yh=e}function E2(){yh=null}const b8=e=>_v;function _v(e,t=er,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&z0(-1);const n=zf(t);let u;try{u=e(...a)}finally{zf(n),i._d&&z0(1)}return _2(t),u};return i._n=!0,i._c=!0,i._d=!0,i}let F0=!1;function Cl(){F0=!0}function nl(e){const{type:t,vnode:r,proxy:i,withProxy:a,props:n,propsOptions:[u],slots:c,attrs:d,emit:m,render:M,renderCache:S,data:R,setupState:C,ctx:P,inheritAttrs:k}=e;let L,I;const B=zf(e);F0=!1;try{if(r.shapeFlag&4){const W=a||i;L=Ur(M.call(W,W,S,n,C,R,P)),I=d}else{const W=t;d===n&&Cl(),L=Ur(W.length>1?W(n,{get attrs(){return Cl(),d},slots:c,emit:m}):W(n,null)),I=t.props?d:_8(d)}}catch(W){Bf.length=0,ba(W,e,1),L=Zt(tr)}let H=L,F;if(L.patchFlag>0&&L.patchFlag&2048&&([H,F]=w8(L)),I&&k!==!1){const W=Object.keys(I),{shapeFlag:Y}=H;if(W.length){if(Y&7)u&&W.some(xl)&&(I=M8(I,u)),H=di(H,I);else if(!F0&&H.type!==tr){const ie=Object.keys(d),J=[],V=[];for(let oe=0,_=ie.length;oe<_;oe++){const o=ie[oe];Ps(o)?xl(o)||J.push(o[2].toLowerCase()+o.slice(3)):V.push(o)}V.length&&Ue(`Extraneous non-props attributes (${V.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(bm(H)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),H=di(H),H.dirs=H.dirs?H.dirs.concat(r.dirs):r.dirs),r.transition&&(bm(H)||Ue("Component inside renders non-element root node that cannot be animated."),H.transition=r.transition),F?F(H):L=H,zf(B),L}const w8=e=>{const t=e.children,r=e.dynamicChildren,i=Mv(t);if(!i)return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,u=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Ur(i),u]};function Mv(e){let t;for(let r=0;r{let t;for(const r in e)(r==="class"||r==="style"||Ps(r))&&((t||(t={}))[r]=e[r]);return t},M8=(e,t)=>{const r={};for(const i in e)(!xl(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},bm=e=>e.shapeFlag&7||e.type===tr;function S8(e,t,r){const{props:i,children:a,component:n}=e,{props:u,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&go||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?wm(i,u,m):!!u;if(d&8){const M=t.dynamicProps;for(let S=0;Se.__isSuspense,x8={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,u,c,d,m){e==null?R8(t,r,i,a,n,u,c,d,m):A8(e,t,r,i,a,u,c,d,m)},hydrate:T8,create:xv,normalize:O8},E8=x8;function Gf(e,t){const r=e.props&&e.props[t];Qe(r)&&r()}function R8(e,t,r,i,a,n,u,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=xv(e,a,i,t,S,r,n,u,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,u),R.deps>0?(Gf(e,"onPending"),Gf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,u),Za(R,e.ssFallback)):R.resolve(!1,!0)}function A8(e,t,r,i,a,n,u,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,C=t.ssFallback,{activeBranch:P,pendingBranch:k,isInFallback:L,isHydrating:I}=S;if(k)S.pendingBranch=R,Li(R,k)?(d(k,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():L&&(d(P,C,r,i,a,null,n,u,c),Za(S,C))):(S.pendingId++,I?(S.isHydrating=!1,S.activeBranch=k):m(k,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():(d(P,C,r,i,a,null,n,u,c),Za(S,C))):P&&Li(R,P)?(d(P,R,r,i,a,S,n,u,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0&&S.resolve()));else if(P&&Li(R,P))d(P,R,r,i,a,S,n,u,c),Za(S,R);else if(Gf(t,"onPending"),S.pendingBranch=R,S.pendingId++,d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0)S.resolve();else{const{timeout:B,pendingId:H}=S;B>0?setTimeout(()=>{S.pendingId===H&&S.fallback(C)},B):B===0&&S.fallback(C)}}let _m=!1;function xv(e,t,r,i,a,n,u,c,d,m,M=!1){_m||(_m=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:S,m:R,um:C,n:P,o:{parentNode:k,remove:L}}=m;let I;const B=I8(e);B&&t!=null&&t.pendingBranch&&(I=t.pendingId,t.deps++);const H=e.props?Al(e.props.timeout):void 0;vv(H,"Suspense timeout");const F={vnode:e,parent:t,parentComponent:r,isSVG:u,container:i,hiddenContainer:a,anchor:n,deps:0,pendingId:0,timeout:typeof H=="number"?H:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:M,isUnmounted:!1,effects:[],resolve(W=!1,Y=!1){{if(!W&&!F.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(F.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:ie,activeBranch:J,pendingBranch:V,pendingId:oe,effects:_,parentComponent:o,container:f}=F;if(F.isHydrating)F.isHydrating=!1;else if(!W){const p=J&&V.transition&&V.transition.mode==="out-in";p&&(J.transition.afterLeave=()=>{oe===F.pendingId&&R(V,f,w,0)});let{anchor:w}=F;J&&(w=P(J),C(J,o,F,!0)),p||R(V,f,w,0)}Za(F,V),F.pendingBranch=null,F.isInFallback=!1;let l=F.parent,h=!1;for(;l;){if(l.pendingBranch){l.effects.push(..._),h=!0;break}l=l.parent}h||gh(_),F.effects=[],B&&t&&t.pendingBranch&&I===t.pendingId&&(t.deps--,t.deps===0&&!Y&&t.resolve()),Gf(ie,"onResolve")},fallback(W){if(!F.pendingBranch)return;const{vnode:Y,activeBranch:ie,parentComponent:J,container:V,isSVG:oe}=F;Gf(Y,"onFallback");const _=P(ie),o=()=>{F.isInFallback&&(S(null,W,V,_,J,null,oe,c,d),Za(F,W))},f=W.transition&&W.transition.mode==="out-in";f&&(ie.transition.afterLeave=o),F.isInFallback=!0,C(ie,J,null,!0),f||o()},move(W,Y,ie){F.activeBranch&&R(F.activeBranch,W,Y,ie),F.container=W},next(){return F.activeBranch&&P(F.activeBranch)},registerDep(W,Y){const ie=!!F.pendingBranch;ie&&F.deps++;const J=W.vnode.el;W.asyncDep.catch(V=>{ba(V,W,0)}).then(V=>{if(W.isUnmounted||F.isUnmounted||F.pendingId!==W.suspenseId)return;W.asyncResolved=!0;const{vnode:oe}=W;Tf(oe),Z0(W,V,!1),J&&(oe.el=J);const _=!J&&W.subTree.el;Y(W,oe,k(J||W.subTree.el),J?null:P(W.subTree),F,u,d),_&&L(_),Sv(W,oe.el),Of(),ie&&--F.deps===0&&F.resolve()})},unmount(W,Y){F.isUnmounted=!0,F.activeBranch&&C(F.activeBranch,r,W,Y),F.pendingBranch&&C(F.pendingBranch,r,W,Y)}};return F}function T8(e,t,r,i,a,n,u,c,d){const m=t.suspense=xv(t,i,r,e.parentNode,document.createElement("div"),null,a,n,u,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,u);return m.deps===0&&m.resolve(!1,!0),M}function O8(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=Mm(i?r.default:r),e.ssFallback=i?Mm(r.fallback):Zt(tr)}function Mm(e){let t;if(Qe(e)){const r=fa&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Wr,i_())}if(ze(e)){const r=Mv(e);r||Ue(" slots expect a single root node."),e=r}return e=Ur(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function A2(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):gh(e)}function Za(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e,a=r.el=t.el;i&&i.subTree===r&&(i.vnode.el=a,Sv(i,a))}function I8(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function T2(e,t){return cu(e,null,t)}function O2(e,t){return cu(e,null,Pt({},t,{flush:"post"}))}function P8(e,t){return cu(e,null,Pt({},t,{flush:"sync"}))}const qu={};function lr(e,t,r){return Qe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),cu(e,t,r)}function cu(e,t,{immediate:r,deep:i,flush:a,onTrack:n,onTrigger:u}=$t){var c;t||(r!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const d=W=>{Ue("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=Qw()===((c=Qt)==null?void 0:c.scope)?Qt:null;let M,S=!1,R=!1;if(Xt(e)?(M=()=>e.value,S=Hf(e)):po(e)?(M=()=>e,i=!0):ze(e)?(R=!0,S=e.some(W=>po(W)||Hf(W)),M=()=>e.map(W=>{if(Xt(W))return W.value;if(po(W))return Go(W);if(Qe(W))return en(W,m,2);d(W)})):Qe(e)?t?M=()=>en(e,m,2):M=()=>{if(!(m&&m.isUnmounted))return C&&C(),Zr(e,m,3,[P])}:(M=qr,d(e)),t&&i){const W=M;M=()=>Go(W())}let C,P=W=>{C=H.onStop=()=>{en(W,m,4)}},k;if(fs)if(P=qr,t?r&&Zr(t,m,3,[M(),R?[]:void 0,P]):M(),a==="sync"){const W=g_();k=W.__watcherHandles||(W.__watcherHandles=[])}else return qr;let L=R?new Array(e.length).fill(qu):qu;const I=()=>{if(H.active)if(t){const W=H.run();(i||S||(R?W.some((Y,ie)=>as(Y,L[ie])):as(W,L)))&&(C&&C(),Zr(t,m,3,[W,L===qu?void 0:R&&L[0]===qu?[]:L,P]),L=W)}else H.run()};I.allowRecurse=!!t;let B;a==="sync"?B=I:a==="post"?B=()=>gr(I,m&&m.suspense):(I.pre=!0,m&&(I.id=m.uid),B=()=>lu(I));const H=new uu(M,B);H.onTrack=n,H.onTrigger=u,t?r?I():L=H.run():a==="post"?gr(H.run.bind(H),m&&m.suspense):H.run();const F=()=>{H.stop(),m&&m.scope&&iv(m.scope.effects,H)};return k&&k.push(F),F}function C8(e,t,r){const i=this.proxy,a=Vt(e)?e.includes(".")?I2(i,e):()=>i[e]:e.bind(i,i);let n;Qe(t)?n=t:(n=t.handler,r=t);const u=Qt;Eo(this);const c=cu(a,n.bind(i),r);return u?Eo(u):yo(),c}function I2(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a{Go(r,t)});else if(Gw(e))for(const r in e)Go(e[r],t);return e}function P2(e){V4(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function ol(e,t){const r=er;if(r===null)return Ue("withDirectives can only be used inside render functions."),e;const i=Eh(r)||r.proxy,a=e.dirs||(e.dirs=[]);for(let n=0;n{e.isMounted=!0}),Mh(()=>{e.isUnmounting=!0}),e}const ni=[Function,Array],Rv={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ni,onEnter:ni,onAfterEnter:ni,onEnterCancelled:ni,onBeforeLeave:ni,onLeave:ni,onAfterLeave:ni,onLeaveCancelled:ni,onBeforeAppear:ni,onAppear:ni,onAfterAppear:ni,onAppearCancelled:ni},B8={name:"BaseTransition",props:Rv,setup(e,{slots:t}){const r=Fi(),i=Ev();let a;return()=>{const n=t.default&&bh(t.default(),!0);if(!n||!n.length)return;let u=n[0];if(n.length>1){let k=!1;for(const L of n)if(L.type!==tr){if(k){Ue(" can only be used on a single element or component. Use for lists.");break}u=L,k=!0}}const c=lt(e),{mode:d}=c;if(d&&d!=="in-out"&&d!=="out-in"&&d!=="default"&&Ue(`invalid mode: ${d}`),i.isLeaving)return Cc(u);const m=Sm(u);if(!m)return Cc(u);const M=ss(m,c,i,r);sa(m,M);const S=r.subTree,R=S&&Sm(S);let C=!1;const{getTransitionKey:P}=m.type;if(P){const k=P();a===void 0?a=k:k!==a&&(a=k,C=!0)}if(R&&R.type!==tr&&(!Li(m,R)||C)){const k=ss(R,c,i,r);if(sa(R,k),d==="out-in")return i.isLeaving=!0,k.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&r.update()},Cc(u);d==="in-out"&&m.type!==tr&&(k.delayLeave=(L,I,B)=>{const H=B2(i,R);H[String(R.key)]=R,L._leaveCb=()=>{I(),L._leaveCb=void 0,delete M.delayedLeave},M.delayedLeave=B})}return u}}},C2=B8;function B2(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ss(e,t,r,i){const{appear:a,mode:n,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:m,onEnterCancelled:M,onBeforeLeave:S,onLeave:R,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:k,onAppear:L,onAfterAppear:I,onAppearCancelled:B}=t,H=String(e.key),F=B2(r,e),W=(J,V)=>{J&&Zr(J,i,9,V)},Y=(J,V)=>{const oe=V[1];W(J,V),ze(J)?J.every(_=>_.length<=1)&&oe():J.length<=1&&oe()},ie={mode:n,persisted:u,beforeEnter(J){let V=c;if(!r.isMounted)if(a)V=k||c;else return;J._leaveCb&&J._leaveCb(!0);const oe=F[H];oe&&Li(e,oe)&&oe.el._leaveCb&&oe.el._leaveCb(),W(V,[J])},enter(J){let V=d,oe=m,_=M;if(!r.isMounted)if(a)V=L||d,oe=I||m,_=B||M;else return;let o=!1;const f=J._enterCb=l=>{o||(o=!0,l?W(_,[J]):W(oe,[J]),ie.delayedLeave&&ie.delayedLeave(),J._enterCb=void 0)};V?Y(V,[J,f]):f()},leave(J,V){const oe=String(e.key);if(J._enterCb&&J._enterCb(!0),r.isUnmounting)return V();W(S,[J]);let _=!1;const o=J._leaveCb=f=>{_||(_=!0,V(),f?W(P,[J]):W(C,[J]),J._leaveCb=void 0,F[oe]===e&&delete F[oe])};F[oe]=e,R?Y(R,[J,o]):o()},clone(J){return ss(J,t,r,i)}};return ie}function Cc(e){if(Ls(e))return e=di(e),e.children=null,e}function Sm(e){return Ls(e)?e.children?e.children[0]:void 0:e}function sa(e,t){e.shapeFlag&6&&e.component?sa(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 bh(e,t=!1,r){let i=[],a=0;for(let n=0;n1)for(let n=0;nPt({name:e.name},t,{setup:e}))():e}const ta=e=>!!e.type.__asyncLoader;function L8(e){Qe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:u=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let C;return d||(C=d=t().catch(P=>{if(P=P instanceof Error?P:new Error(String(P)),c)return new Promise((k,L)=>{c(P,()=>k(S()),()=>L(P),M+1)});throw P}).then(P=>{if(C!==d&&d)return d;if(P||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),P&&(P.__esModule||P[Symbol.toStringTag]==="Module")&&(P=P.default),P&&!Rt(P)&&!Qe(P))throw new Error(`Invalid async component load result: ${P}`);return m=P,P}))};return Bs({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const C=Qt;if(m)return()=>Bc(m,C);const P=B=>{d=null,ba(B,C,13,!i)};if(u&&C.suspense||fs)return R().then(B=>()=>Bc(B,C)).catch(B=>(P(B),()=>i?Zt(i,{error:B}):null));const k=mr(!1),L=mr(),I=mr(!!a);return a&&setTimeout(()=>{I.value=!1},a),n!=null&&setTimeout(()=>{if(!k.value&&!L.value){const B=new Error(`Async component timed out after ${n}ms.`);P(B),L.value=B}},n),R().then(()=>{k.value=!0,C.parent&&Ls(C.parent.vnode)&&lu(C.parent.update)}).catch(B=>{P(B),L.value=B}),()=>{if(k.value&&m)return Bc(m,C);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!I.value)return Zt(r)}}})}function Bc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,u=Zt(e,i,a);return u.ref=r,u.ce=n,delete t.vnode.ce,u}const Ls=e=>e.type.__isKeepAlive,N8={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=Fi(),i=r.ctx;if(!i.renderer)return()=>{const B=t.default&&t.default();return B&&B.length===1?B[0]:B};const a=new Map,n=new Set;let u=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(B,H,F,W,Y)=>{const ie=B.component;m(B,H,F,0,c),d(ie.vnode,B,H,F,ie,c,W,B.slotScopeIds,Y),gr(()=>{ie.isDeactivated=!1,ie.a&&so(ie.a);const J=B.props&&B.props.onVnodeMounted;J&&Dr(J,ie.parent,B)},c),D0(ie)},i.deactivate=B=>{const H=B.component;m(B,R,null,1,c),gr(()=>{H.da&&so(H.da);const F=B.props&&B.props.onVnodeUnmounted;F&&Dr(F,H.parent,B),H.isDeactivated=!0},c),D0(H)};function C(B){Lc(B),M(B,r,c,!0)}function P(B){a.forEach((H,F)=>{const W=Xf(H.type);W&&(!B||!B(W))&&k(F)})}function k(B){const H=a.get(B);!u||!Li(H,u)?C(H):u&&Lc(u),a.delete(B),n.delete(B)}lr(()=>[e.include,e.exclude],([B,H])=>{B&&P(F=>_f(B,F)),H&&P(F=>!_f(H,F))},{flush:"post",deep:!0});let L=null;const I=()=>{L!=null&&a.set(L,Nc(r.subTree))};return Ns(I),_h(I),Mh(()=>{a.forEach(B=>{const{subTree:H,suspense:F}=r,W=Nc(H);if(B.type===W.type&&B.key===W.key){Lc(W);const Y=W.component.da;Y&&gr(Y,F);return}C(B)})}),()=>{if(L=null,!t.default)return null;const B=t.default(),H=B[0];if(B.length>1)return Ue("KeepAlive should contain exactly one component child."),u=null,B;if(!Nn(H)||!(H.shapeFlag&4)&&!(H.shapeFlag&128))return u=null,H;let F=Nc(H);const W=F.type,Y=Xf(ta(F)?F.type.__asyncResolved||{}:W),{include:ie,exclude:J,max:V}=e;if(ie&&(!Y||!_f(ie,Y))||J&&Y&&_f(J,Y))return u=F,H;const oe=F.key==null?W:F.key,_=a.get(oe);return F.el&&(F=di(F),H.shapeFlag&128&&(H.ssContent=F)),L=oe,_?(F.el=_.el,F.component=_.component,F.transition&&sa(F,F.transition),F.shapeFlag|=512,n.delete(oe),n.add(oe)):(n.add(oe),V&&n.size>parseInt(V,10)&&k(n.values().next().value)),F.shapeFlag|=256,u=F,R2(H.type)?H:F}}},k8=N8;function _f(e,t){return ze(e)?e.some(r=>_f(r,t)):Vt(e)?e.split(",").includes(t):K4(e)?e.test(t):!1}function L2(e,t){k2(e,"a",t)}function N2(e,t){k2(e,"da",t)}function k2(e,t,r=Qt){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(wh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Ls(a.parent.vnode)&&$8(i,t,r,a),a=a.parent}}function $8(e,t,r,i){const a=wh(t,e,i,!0);Sh(()=>{iv(i[t],a)},r)}function Lc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Nc(e){return e.shapeFlag&128?e.ssContent:e}function wh(e,t,r=Qt,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...u)=>{if(r.isUnmounted)return;ga(),Eo(r);const c=Zr(t,r,e,u);return yo(),ma(),c});return i?a.unshift(n):a.push(n),n}else{const a=xn(gv[e].replace(/ hook$/,""));Ue(`${a} 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 Vn=e=>(t,r=Qt)=>(!fs||e==="sp")&&wh(e,(...i)=>t(...i),r),$2=Vn("bm"),Ns=Vn("m"),Av=Vn("bu"),_h=Vn("u"),Mh=Vn("bum"),Sh=Vn("um"),D2=Vn("sp"),F2=Vn("rtg"),j2=Vn("rtc");function U2(e,t=Qt){wh("ec",e,t)}const Bl="components",D8="directives";function F8(e,t){return Tv(Bl,e,!0,t)||e}const H2=Symbol.for("v-ndc");function j8(e){return Vt(e)?Tv(Bl,e,!1)||e:e||H2}function U8(e){return Tv(D8,e)}function Tv(e,t,r=!0,i=!1){const a=er||Qt;if(a){const n=a.type;if(e===Bl){const c=Xf(n,!1);if(c&&(c===t||c===Kr(t)||c===_o(Kr(t))))return n}const u=xm(a[e]||n[e],t)||xm(a.appContext[e],t);if(!u&&i)return n;if(r&&!u){const c=e===Bl?` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return u}else Ue(`resolve${_o(e.slice(0,-1))} can only be used in render() or setup().`)}function xm(e,t){return e&&(e[t]||e[Kr(t)]||e[_o(Kr(t))])}function Ii(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||Vt(e)){a=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,n&&n[c]));else{const u=Object.keys(e);a=new Array(u.length);for(let c=0,d=u.length;c{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function j0(e,t,r={},i,a){if(er.isCE||er.parent&&ta(er.parent)&&er.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(Ue("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."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const u=n&&q2(n(r)),c=Cv(Lt,{key:r.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function q2(e){return e.some(t=>Nn(t)?!(t.type===tr||t.type===Lt&&!q2(t.children)):!0)?e:null}function q8(e,t){const r={};if(!Rt(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:xn(i)]=e[i];return r}const U0=e=>e?l_(e)?Eh(e)||e.proxy:U0(e.parent):null,ra=Pt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Wa(e.props),$attrs:e=>Wa(e.attrs),$slots:e=>Wa(e.slots),$refs:e=>Wa(e.refs),$parent:e=>U0(e.parent),$root:e=>U0(e.root),$emit:e=>e.emit,$options:e=>Iv(e),$forceUpdate:e=>e.f||(e.f=()=>lu(e.update)),$nextTick:e=>e.n||(e.n=uo.bind(e.proxy)),$watch:e=>C8.bind(e)}),Ov=e=>e==="_"||e==="$",kc=(e,t)=>e!==$t&&!e.__isScriptSetup&&wt(e,t),Pf={get({_:e},t){const{ctx:r,setupState:i,data:a,props:n,accessCache:u,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const C=u[t];if(C!==void 0)switch(C){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(kc(i,t))return u[t]=1,i[t];if(a!==$t&&wt(a,t))return u[t]=2,a[t];if((m=e.propsOptions[0])&&wt(m,t))return u[t]=3,n[t];if(r!==$t&&wt(r,t))return u[t]=4,r[t];H0&&(u[t]=0)}}const M=ra[t];let S,R;if(M)return t==="$attrs"?(Tr(e,"get",t),Cl()):t==="$slots"&&Tr(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==$t&&wt(r,t))return u[t]=4,r[t];if(R=d.config.globalProperties,wt(R,t))return R[t];er&&(!Vt(t)||t.indexOf("__v")!==0)&&(a!==$t&&Ov(t[0])&&wt(a,t)?Ue(`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===er&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return kc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&wt(a,t)?(Ue(`Cannot mutate - - - - - - + + + + + + + diff --git a/web/settings/modules/legacy_smart_home/smarthomeconfig.php b/web/settings/modules/legacy_smart_home/smarthomeconfig.php index f24ee3f528..f404a67646 100644 --- a/web/settings/modules/legacy_smart_home/smarthomeconfig.php +++ b/web/settings/modules/legacy_smart_home/smarthomeconfig.php @@ -848,7 +848,6 @@ - @@ -860,7 +859,7 @@
-
+
@@ -914,13 +913,13 @@
-
+
-
+
@@ -928,7 +927,6 @@ Standardeinstellungen verschiedener Geräte:
SDM630/Lovato: 8899
Elgris: 502 - b23: ???
From 63e0e3528afd105965a64ad20441a05415e0062a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 10 Aug 2023 08:27:01 +0200 Subject: [PATCH 058/121] backport client_factory --- packages/modules/internal_chargepoint_handler/clients.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/modules/internal_chargepoint_handler/clients.py b/packages/modules/internal_chargepoint_handler/clients.py index 346959bb44..e1a808dd47 100644 --- a/packages/modules/internal_chargepoint_handler/clients.py +++ b/packages/modules/internal_chargepoint_handler/clients.py @@ -96,7 +96,14 @@ def client_factory(local_charge_point_num: int, resolved_devices = [str(file.resolve()) for file in tty_devices] log.debug("resolved_devices"+str(resolved_devices)) counter = len(resolved_devices) - if counter == 1 and resolved_devices[0] in BUS_SOURCES: + if counter == 0: + # Wenn kein USB-Gerät gefunden wird, wird der Modbus-Anschluss der AddOn-Platine genutzt (/dev/serial0) + serial_client = ModbusSerialClient_("/dev/serial0") + if local_charge_point_num == 0: + evse_ids = EVSE_ID_CP0 + else: + evse_ids = EVSE_ID_ONE_BUS_CP1 + elif counter == 1 and resolved_devices[0] in BUS_SOURCES: if local_charge_point_num == 0: log.error("LP0 Device: "+str(resolved_devices[0])) serial_client = ModbusSerialClient_(resolved_devices[0]) From ca6f18fba15f49169aded9304e9e723740598ea3 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 11 Aug 2023 07:16:22 +0200 Subject: [PATCH 059/121] fix sungrow --- packages/modules/devices/sungrow/device.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/modules/devices/sungrow/device.py b/packages/modules/devices/sungrow/device.py index f00c00d5de..be3de2246e 100644 --- a/packages/modules/devices/sungrow/device.py +++ b/packages/modules/devices/sungrow/device.py @@ -95,12 +95,12 @@ def read_legacy(ip_address: str, dev.update() -def read_legacy_bat(ip_address: str, modbus_id: int): - read_legacy(ip_address, modbus_id, bat.component_descriptor.configuration_factory(id=None)) +def read_legacy_bat(ip_address: str, port: int, modbus_id: int): + read_legacy(ip_address, port, modbus_id, bat.component_descriptor.configuration_factory(id=None)) -def read_legacy_counter(ip_address: str, modbus_id: int, version: int): - read_legacy(ip_address, modbus_id, counter.component_descriptor.configuration_factory( +def read_legacy_counter(ip_address: str, port: int, modbus_id: int, version: int): + read_legacy(ip_address, port, modbus_id, counter.component_descriptor.configuration_factory( id=None, configuration=SungrowCounterConfiguration(version=Version(version)))) From 32c15782f8fe272ec8b2044560fa560a505fe985 Mon Sep 17 00:00:00 2001 From: Flock82 <81387035+Flock82@users.noreply.github.com> Date: Mon, 14 Aug 2023 23:16:49 +0200 Subject: [PATCH 060/121] [Kia] - Parameter update --- modules/soc_kia/parameters.py | 10 +++++----- modules/soc_kia/stamps.py | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/soc_kia/parameters.py b/modules/soc_kia/parameters.py index 8e8cb08c71..9b701e5738 100755 --- a/modules/soc_kia/parameters.py +++ b/modules/soc_kia/parameters.py @@ -117,17 +117,17 @@ def loadBrandData(): setParameter('baseUrl', 'https://' + getParameter('host')) setParameter('clientId', 'fdc85c00-0a2f-4c64-bcb4-2cfb1500730a') setParameter('authClientId', '572e0304-5f8d-4b4c-9dd5-41aa84eed160') - setParameter('appId', 'a2b8469b-30a3-4361-8e13-6fceea8fbe74') - setParameter('GCMSenderId', '345127537656') - setParameter('PushType', 'APNS') + setParameter('appId', '1518dd6b-2759-4995-9ae5-c9ad4a9ddad1') + setParameter('GCMSenderId', 'cF5o4DiiQkaw5wsAkLzYIS:APA91bFB59MltBMK29zI0U2llq7khbB2jELkNFKMfBCH6KlCPL16pz_dG0fZ4ncvFn1IMT8nfojb83JyLiT_skBTXtClHhDCKeRbyPy3yQjCVRC3zTZt--wI7vv4jD9aknhHhiQsoZoU') + setParameter('PushType', 'GCM') setParameter('basicToken', 'Basic ZmRjODVjMDAtMGEyZi00YzY0LWJjYjQtMmNmYjE1MDA3MzBhOnNlY3JldA==') if getParameter('brand') == 'hyundai': setParameter('host', 'prd.eu-ccapi.hyundai.com:8080') setParameter('baseUrl', 'https://' + getParameter('host')) setParameter('clientId', '6d477c38-3ca4-4cf3-9557-2a1929a94654') setParameter('authClientId', '64621b96-0f0d-11ec-82a8-0242ac130003') - setParameter('appId', '1eba27d2-9a5b-4eba-8ec7-97eb6c62fb51') - setParameter('GCMSenderId', '414998006775') + setParameter('appId', '014d2225-8495-4735-812d-2616334fd15d') + setParameter('GCMSenderId', 'dQtCqr7gRjy31Ao4nPiLVy:APA91bF_tv9yPOTFa-sW9-vCxOVpzD_iLjRopN_zaKgPKdwS7OYTWFN626-ObhZyzka5kYFKG0KfCsuMOUD5aw9Gyrdh-IeBQZHIcfb5YNUrQBvfqQxbggk9kO6gZeFbCpCLHZB6wITC') setParameter('PushType', 'GCM') setParameter( 'basicToken', 'Basic NmQ0NzdjMzgtM2NhNC00Y2YzLTk1NTctMmExOTI5YTk0NjU0OktVeTQ5WHhQekxwTHVvSzB4aEJDNzdXNlZYaG10UVI5aVFobUlGampvWTRJcHhzVg==') diff --git a/modules/soc_kia/stamps.py b/modules/soc_kia/stamps.py index 7927674902..debe105424 100755 --- a/modules/soc_kia/stamps.py +++ b/modules/soc_kia/stamps.py @@ -12,12 +12,12 @@ def getStamp(): # Set App-ID and App-ID specific key brand = parameters.getParameter('brand') if brand == 'kia': - appid = "a2b8469b-30a3-4361-8e13-6fceea8fbe74" - secret_ba = bytearray.fromhex("C0B4D5C7089D987F027C96015929C70FA13486E934A33762BB2801E212E43395C283300BD43939B04DFA77F6F1E4F14C6D9B") + appid = "1518dd6b-2759-4995-9ae5-c9ad4a9ddad1" + secret_ba = bytearray.fromhex("C0B4D5C7089D987F027C96015929C70FA9D2B2AA99530CFD017E4B243C4BA5C5DED96DEB128EEB5DD3963DFC12432C9073EF") if brand == 'hyundai': - appid = "1eba27d2-9a5b-4eba-8ec7-97eb6c62fb51" - secret_ba = bytearray.fromhex("445B6846AFEF0D726646776865A650C9AEF98E51A474DCB7EC9B1B67D29C66EAAEF621CA02522A0B80A8087F7A3A7BB0F71B") + appid = "014d2225-8495-4735-812d-2616334fd15d" + secret_ba = bytearray.fromhex("445B6846AFEF0D726646776865A650C9F3A8B7B3AB22A195163F7A898D962F7CB21F967FA54BE5521AA60B10F6B7E0FADC3B") # Combine plaintext and convert to bytearray plaintext = appid + ":" + now From 512c66b18d634b29aa573c1df1e7e36afe694d88 Mon Sep 17 00:00:00 2001 From: Flock82 <81387035+Flock82@users.noreply.github.com> Date: Mon, 14 Aug 2023 23:22:16 +0200 Subject: [PATCH 061/121] [Kia] - Parameter Update --- packages/modules/vehicles/kia/api.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/modules/vehicles/kia/api.py b/packages/modules/vehicles/kia/api.py index a82a109c5c..b8f48d7123 100644 --- a/packages/modules/vehicles/kia/api.py +++ b/packages/modules/vehicles/kia/api.py @@ -47,20 +47,23 @@ def getString(param_id: str, brand: str) -> str: if brand == 'hyundai': if param_id == "app_id": - paramStr = "1eba27d2-9a5b-4eba-8ec7-97eb6c62fb51" + paramStr = "014d2225-8495-4735-812d-2616334fd15d" elif param_id == "client_id": paramStr = "6d477c38-3ca4-4cf3-9557-2a1929a94654" elif param_id == "auth_client_id": paramStr = "64621b96-0f0d-11ec-82a8-0242ac130003" elif param_id == "gcm_sender_id": - paramStr = "414998006775" + paramStr = "dQtCqr7gRjy31Ao4nPiLVy:APA91bF_tv9yPOTFa-sW9-vCxO" + \ + "VpzD_iLjRopN_zaKgPKdwS7OYTWFN626-ObhZyzka5kYFKG0K" + \ + "fCsuMOUD5aw9Gyrdh-IeBQZHIcfb5YNUrQBvfqQxbggk9kO6g" + \ + "ZeFbCpCLHZB6wITC" elif param_id == "basic_token": paramStr = "Basic NmQ0NzdjMzgtM2NhNC00Y2YzLTk1NTctMmExOTI5YTk" + \ "0NjU0OktVeTQ5WHhQekxwTHVvSzB4aEJDNzdXNlZYaG10UVI5" + \ "aVFobUlGampvWTRJcHhzVg==" elif param_id == "stamp_pad": - paramStr = "445B6846AFEF0D726646776865A650C9AEF98E51A474DCB7E" + \ - "C9B1B67D29C66EAAEF621CA02522A0B80A8087F7A3A7BB0F71B" + paramStr = "445B6846AFEF0D726646776865A650C9F3A8B7B3AB22A1951" + \ + "63F7A898D962F7CB21F967FA54BE5521AA60B10F6B7E0FADC3B" elif param_id == "host": paramStr = "prd.eu-ccapi.hyundai.com:8080" elif param_id == "base_url": From a46807c944351aaddc05595256c2adeb49f42e7c Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 15 Aug 2023 10:03:47 +0200 Subject: [PATCH 062/121] wiki docs --- docs/Ladung nur nach Freischaltung.md | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/docs/Ladung nur nach Freischaltung.md b/docs/Ladung nur nach Freischaltung.md index 456590fb6d..9093ea2ca8 100644 --- a/docs/Ladung nur nach Freischaltung.md +++ b/docs/Ladung nur nach Freischaltung.md @@ -1,11 +1,22 @@ -Nach Abstecken des Fahrzeugs soll der Ladepunkte gesperrt werden und eine Ladung erst nach Eingeben einer PIN, Vorhalten eines RFID-Tags oder Auswahl eines Fahrzeugs im User Interface gestartet werden. +Nach Abstecken des Fahrzeugs soll der Ladepunkt gesperrt werden und eine neue Ladung erst nach Freischalten durch: -* für jedes physische Fahrzeug unter _Einstellungen->Konfiguration->Fahrzeuge_ zusätzlich zum Standardprofil ein Fahrzeug anlegen -* Lademodus des Standardfahrzeugs auf `Stop` -* in jedem Ladeprofil: `Standard nach Abstecken` aktivieren +- Eingeben einer PIN am openWB-Display (sofern mit Touchdisplay) oder +- Vorhalten eines RFID-Tags an der openWB mit RFID-Reader oder +- Direkt-tagging über den Ladestecker mit der openWB-Pro oder +- Auswahl eines Fahrzeugs im User Interface -Wenn die Freischaltung mittels RFID oder Pin erfolgen soll: +gestartet werden. -* _Einstellungen -> Optional_: RFID aktivieren -* im Fahrzeug: Tag zuweisen -* in dem Ladepunkt-Profil: Freischaltung mit RFID aktivieren und die gültigen Tags eintragen +Hierzu ist folgendes zu konfigurieren: + +1. für jedes Fahrzeug mit Freischaltwunsch unter Einstellungen -> Konfiguration -> Fahrzeuge zusätzlich zum Standard-Fahrzeug **ein separates Fahrzeug** anlegen +2. unter Lade-Profile -> **Standard-Lade-Profil** (wird nur dem Standard-Fahrzeug zugeordnet) -> **Lademodus auf Stop** stellen +3. ein **neues Lade-Profil** für Fahrzeuge mit Freischaltwunsch anlegen (z.B. RFID-Lade-Profil) und dort -> **Standard nach Abstecken** aktivieren sowie bevorzugten Lademodus wählen +4. den Fahrzeugen mit Freischaltwunsch **das Lade-Profil** für Fahrzeuge mit Freischaltwunsch **zuweisen** (z.B. RFID-Lade-Profil) +5. **Speichern** nicht vergessen + +Wenn die Freischaltung mittels PIN, RFID oder MAC-Adresse erfolgen soll: + +- Einstellungen -> Optionale Hardware: **RFID aktivieren** + Speichern +- unter Konfiguration -> Fahrzeuge -> gewünschtes Fahrzeug -> Zugeordnete Tags: dem jeweiligen Fahrzeug **den Tag (PIN/RFID-Tag/MAC-Adresse) zuweisen** + Speichern +- unter Konfiguration -> Ladepunkte -> Ladepunkt-Profile -> im gewünschten Ladepunkt-Profil: **Freischaltung mit RFID aktivieren und die gültigen Tags eintragen** + Speichern From 7b9b54fa1721ef8cde45a5098fd5168b6359512a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 17 Aug 2023 11:57:24 +0200 Subject: [PATCH 063/121] typo --- packages/modules/ripple_control_receiver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/ripple_control_receiver.py b/packages/modules/ripple_control_receiver.py index 5c722a0ed2..1f29b678d9 100644 --- a/packages/modules/ripple_control_receiver.py +++ b/packages/modules/ripple_control_receiver.py @@ -27,5 +27,5 @@ def read() -> Tuple[bool, bool]: except Exception: GPIO.cleanup() log.exception("Fehler beim Auslesen der Rundsteuer-Kontakte.") - log.debug(f"RSE1-Status: {rse1}, RSE2-Satus: {rse2}") + log.debug(f"RSE1-Status: {rse1}, RSE2-Status: {rse2}") return rse1, rse2 From af11258f3b420ab3637a7ebb5e0a612c221d8d87 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 17 Aug 2023 11:58:25 +0200 Subject: [PATCH 064/121] update cards display theme --- .../src/components/ChargePointLockButton.vue | 14 ++++++++------ ...24b7772.js => ChargePointPlugBadge-918c9082.js} | 2 +- .../cards/web/assets/ChargePointsView-49c07fcc.js | 1 + .../cards/web/assets/ChargePointsView-ad6342d8.js | 1 - ...dView-ec89d659.js => DashBoardView-4f849640.js} | 2 +- ...atusView-27618a07.js => StatusView-6530618e.js} | 2 +- .../{index-08d5fe3a.js => index-2bb46dc7.js} | 2 +- .../modules/display_themes/cards/web/index.html | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) rename packages/modules/display_themes/cards/web/assets/{ChargePointPlugBadge-b24b7772.js => ChargePointPlugBadge-918c9082.js} (98%) create mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointsView-49c07fcc.js delete mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointsView-ad6342d8.js rename packages/modules/display_themes/cards/web/assets/{DashBoardView-ec89d659.js => DashBoardView-4f849640.js} (97%) rename packages/modules/display_themes/cards/web/assets/{StatusView-27618a07.js => StatusView-6530618e.js} (86%) rename packages/modules/display_themes/cards/web/assets/{index-08d5fe3a.js => index-2bb46dc7.js} (98%) diff --git a/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue b/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue index 5bc6dd4339..6c9ea75730 100644 --- a/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue +++ b/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue @@ -42,12 +42,14 @@ export default { }, methods: { toggleChargePointManualLock() { - this.$root.sendTopicToBroker( - `openWB/chargepoint/${this.chargePointId}/set/manual_lock`, - !this.mqttStore.getValueBool( - `openWB/chargepoint/${this.chargePointId}/set/manual_lock` - ) - ); + if (!this.changesLocked) { + this.$root.sendTopicToBroker( + `openWB/chargepoint/${this.chargePointId}/set/manual_lock`, + !this.mqttStore.getValueBool( + `openWB/chargepoint/${this.chargePointId}/set/manual_lock` + ) + ); + } }, }, }; diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-b24b7772.js b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-918c9082.js similarity index 98% rename from packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-b24b7772.js rename to packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-918c9082.js index 55ad35e1f0..c5c4d12ea0 100644 --- a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-b24b7772.js +++ b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-918c9082.js @@ -1 +1 @@ -import{l,o as c,n as f,p as n,s as u,f as _,i as y,e as d,F as P,A as S,z as C,j as k,Q as $}from"./vendor-e07709f3.js";import{_ as g}from"./vendor-inkline-4a446dd5.js";import{u as B}from"./index-08d5fe3a.js";import{l as D,j as b,k as N,m as z,F as L}from"./vendor-fortawesome-cc5e1458.js";const M={name:"DashBoardCard",props:{color:String}};function I(t,e,s,r,h,o){const a=l("i-column"),i=l("i-row"),v=l("i-container"),x=l("i-card");return c(),f(x,{color:s.color},{header:n(()=>[u(v,null,{default:n(()=>[u(i,null,{default:n(()=>[u(a,null,{default:n(()=>[_(t.$slots,"headerLeft",{},void 0,!0)]),_:3}),t.$slots.headerRight?(c(),f(a,{key:0,class:"_flex-grow:0 _text-align:right _white-space:nowrap"},{default:n(()=>[_(t.$slots,"headerRight",{},void 0,!0)]),_:3})):y("v-if",!0)]),_:3})]),_:3})]),default:n(()=>[_(t.$slots,"default",{},void 0,!0)]),_:3},8,["color"])}const Y=g(M,[["render",I],["__scopeId","data-v-aa92abad"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoardCard.vue"]]);const m={props:{data:{required:!1,type:Array},socData:{required:!1,type:Array},width:{Number,default:250},height:{Number,default:70},gap:{Number,default:3},stroke:{Number,default:3},min:{Number,default:0},max:{Number,default:1},color:{String,default:"var(--color--primary)"},colorNegative:{String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(e=>{const s=e.x,r=e.y,h=this.stroke,o=Math.min(r,this.zeroHeight),a=Math.abs(r-this.zeroHeight),i=r>this.zeroHeight;t.push({x:s,y:o,width:h,height:a,negative:i})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let e=this.socCoordinates.slice(0,1)[0],s=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${e.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${s.x+this.stroke},${s.y} L ${s.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,e,s){const r=[];return t.forEach((h,o)=>{const a=o*this.width/this.maxPoints+1,i=this.height-(h-e)/(s-e)*this.height;r.push({x:a,y:i})}),r}}},p=()=>{$(t=>({"fc7172b1-color":t.color,"fc7172b1-colorNegative":t.colorNegative}))},w=m.setup;m.setup=w?(t,e)=>(p(),w(t,e)):p;const q=["viewBox"],A=["d"],E=["x","y","width","height"],H=["y1","x2","y2"];function V(t,e,s,r,h,o){return c(),d("svg",{class:"spark-line",viewBox:`0 0 ${s.width} ${s.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[s.socData?(c(),d("path",{key:0,class:"soc-path",d:o.socPath},null,8,A)):y("v-if",!0),(c(!0),d(P,null,S(o.bars,a=>(c(),d("rect",{key:a.x,x:a.x,y:a.y,width:a.width,height:a.height,class:C(s.colorNegative&&a.negative?"negative":"")},null,10,E))),128)),k("line",{class:"zero-line",x1:0,y1:o.zeroHeight,x2:s.width,y2:o.zeroHeight},null,8,H)],8,q)}const Z=g(m,[["render",V],["__scopeId","data-v-fc7172b1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/SparkLine.vue"]]);D.add(b,N,z);const F={name:"ChargePointStateBadge",props:{chargePointId:{required:!0,type:Array}},data(){return{mqttStore:B()}},components:{FontAwesomeIcon:L},computed:{plugState(){var t=!1;return this.chargePointId.forEach(e=>{t|=this.mqttStore.getChargePointPlugState(e)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(e=>{t|=this.mqttStore.getChargePointChargeState(e)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}};function j(t,e,s,r,h,o){const a=l("font-awesome-icon"),i=l("i-badge");return c(),f(i,{size:"lg"},{default:n(()=>[u(a,{"fixed-width":"",icon:o.stateIcon,class:C(o.stateClass)},null,8,["icon","class"])]),_:1})}const G=g(F,[["render",j],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePointPlugBadge.vue"]]);export{G as C,Y as D,Z as S}; +import{l,o as c,n as f,p as n,s as u,f as _,i as y,e as d,F as P,A as S,z as C,j as k,Q as $}from"./vendor-e07709f3.js";import{_ as g}from"./vendor-inkline-4a446dd5.js";import{u as B}from"./index-2bb46dc7.js";import{l as D,j as b,k as N,m as z,F as L}from"./vendor-fortawesome-cc5e1458.js";const M={name:"DashBoardCard",props:{color:String}};function I(t,e,s,r,h,o){const a=l("i-column"),i=l("i-row"),v=l("i-container"),x=l("i-card");return c(),f(x,{color:s.color},{header:n(()=>[u(v,null,{default:n(()=>[u(i,null,{default:n(()=>[u(a,null,{default:n(()=>[_(t.$slots,"headerLeft",{},void 0,!0)]),_:3}),t.$slots.headerRight?(c(),f(a,{key:0,class:"_flex-grow:0 _text-align:right _white-space:nowrap"},{default:n(()=>[_(t.$slots,"headerRight",{},void 0,!0)]),_:3})):y("v-if",!0)]),_:3})]),_:3})]),default:n(()=>[_(t.$slots,"default",{},void 0,!0)]),_:3},8,["color"])}const Y=g(M,[["render",I],["__scopeId","data-v-aa92abad"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoardCard.vue"]]);const m={props:{data:{required:!1,type:Array},socData:{required:!1,type:Array},width:{Number,default:250},height:{Number,default:70},gap:{Number,default:3},stroke:{Number,default:3},min:{Number,default:0},max:{Number,default:1},color:{String,default:"var(--color--primary)"},colorNegative:{String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(e=>{const s=e.x,r=e.y,h=this.stroke,o=Math.min(r,this.zeroHeight),a=Math.abs(r-this.zeroHeight),i=r>this.zeroHeight;t.push({x:s,y:o,width:h,height:a,negative:i})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let e=this.socCoordinates.slice(0,1)[0],s=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${e.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${s.x+this.stroke},${s.y} L ${s.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,e,s){const r=[];return t.forEach((h,o)=>{const a=o*this.width/this.maxPoints+1,i=this.height-(h-e)/(s-e)*this.height;r.push({x:a,y:i})}),r}}},p=()=>{$(t=>({"fc7172b1-color":t.color,"fc7172b1-colorNegative":t.colorNegative}))},w=m.setup;m.setup=w?(t,e)=>(p(),w(t,e)):p;const q=["viewBox"],A=["d"],E=["x","y","width","height"],H=["y1","x2","y2"];function V(t,e,s,r,h,o){return c(),d("svg",{class:"spark-line",viewBox:`0 0 ${s.width} ${s.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[s.socData?(c(),d("path",{key:0,class:"soc-path",d:o.socPath},null,8,A)):y("v-if",!0),(c(!0),d(P,null,S(o.bars,a=>(c(),d("rect",{key:a.x,x:a.x,y:a.y,width:a.width,height:a.height,class:C(s.colorNegative&&a.negative?"negative":"")},null,10,E))),128)),k("line",{class:"zero-line",x1:0,y1:o.zeroHeight,x2:s.width,y2:o.zeroHeight},null,8,H)],8,q)}const Z=g(m,[["render",V],["__scopeId","data-v-fc7172b1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/SparkLine.vue"]]);D.add(b,N,z);const F={name:"ChargePointStateBadge",props:{chargePointId:{required:!0,type:Array}},data(){return{mqttStore:B()}},components:{FontAwesomeIcon:L},computed:{plugState(){var t=!1;return this.chargePointId.forEach(e=>{t|=this.mqttStore.getChargePointPlugState(e)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(e=>{t|=this.mqttStore.getChargePointChargeState(e)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}};function j(t,e,s,r,h,o){const a=l("font-awesome-icon"),i=l("i-badge");return c(),f(i,{size:"lg"},{default:n(()=>[u(a,{"fixed-width":"",icon:o.stateIcon,class:C(o.stateClass)},null,8,["icon","class"])]),_:1})}const G=g(F,[["render",j],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePointPlugBadge.vue"]]);export{G as C,Y as D,Z as S}; diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointsView-49c07fcc.js b/packages/modules/display_themes/cards/web/assets/ChargePointsView-49c07fcc.js new file mode 100644 index 0000000000..c5648493e6 --- /dev/null +++ b/packages/modules/display_themes/cards/web/assets/ChargePointsView-49c07fcc.js @@ -0,0 +1 @@ +import{u as N}from"./index-2bb46dc7.js";import{D as Y,S as $,C as ee}from"./ChargePointPlugBadge-918c9082.js";import{l as F,f as Z,a as j,F as U,b as te,c as ne,j as le,k as oe,m as ie,n as ae,o as re,e as se,p as ce,q as de,r as ue,s as ge,t as he,u as me,v as Ce,w as fe,x as _e,y as pe,z as ve,A as Pe}from"./vendor-fortawesome-cc5e1458.js";import{l as d,o as c,n as v,p as t,s as e,z as M,k as a,x as C,i as u,I as Ve,e as V,j as be,F as T,A as L}from"./vendor-e07709f3.js";import{_ as z}from"./vendor-inkline-4a446dd5.js";F.add(Z,j);const Se={name:"ChargePointLockButton",props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:N()}},components:{FontAwesomeIcon:U},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.changesLocked||this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function ke(i,n,s,f,l,r){const S=d("font-awesome-icon"),_=d("i-button");return c(),v(_,{size:"lg",disabled:s.changesLocked,outline:s.changesLocked},{default:t(()=>[e(S,{"fixed-width":"",icon:r.stateIcon,class:M(r.stateClass),onClick:n[0]||(n[0]=p=>r.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Ie=z(Se,[["render",ke],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue"]]),qe={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number},unit:{type:String},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var i;return this.labels&&this.inputValue!=null?this.inputValuer.label=p)},{prepend:t(()=>[e(S,{onClick:r.decrement},{default:t(()=>[a("-")]),_:1},8,["onClick"])]),suffix:t(()=>[a(C(s.unit),1)]),append:t(()=>[e(S,{onClick:r.increment},{default:t(()=>[a("+")]),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const O=z(qe,[["render",we],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ExtendedNumberInput.vue"]]);F.add(te,ne);const xe={name:"ManualSocInput",props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},data(){return{mqttStore:N(),newSoc:0}},components:{ExtendedNumberInput:O,FontAwesomeIcon:U},emits:["update:modelValue"],methods:{enter(i){let n=this.newSoc*10+i;n>=0&&n<=100&&(this.newSoc=n)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/configuration/soc_start`,this.newSoc),this.close()}}};function ye(i,n,s,f,l,r){const S=d("extended-number-input"),_=d("i-column"),p=d("i-row"),h=d("i-button"),k=d("i-container"),g=d("FontAwesomeIcon"),w=d("i-modal");return c(),v(Ve,{to:"body"},[e(w,{modelValue:s.modelValue,"onUpdate:modelValue":n[15]||(n[15]=m=>i.$emit("update:modelValue",m)),size:"sm"},{header:t(()=>[a(' SoC für Fahrzeug "'+C(l.mqttStore.getVehicleName(s.vehicleId))+'" ',1)]),footer:t(()=>[e(k,null,{default:t(()=>[e(p,null,{default:t(()=>[u(" charge point data on left side "),e(_,null,{default:t(()=>[e(h,{color:"danger",onClick:n[13]||(n[13]=m=>r.close())},{default:t(()=>[a(" Zurück ")]),_:1})]),_:1}),e(_,{class:"_text-align:right"},{default:t(()=>[e(h,{color:"success",onClick:n[14]||(n[14]=m=>r.updateManualSoc())},{default:t(()=>[a(" OK ")]),_:1})]),_:1})]),_:1})]),_:1})]),default:t(()=>[e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,null,{default:t(()=>[e(S,{modelValue:l.newSoc,"onUpdate:modelValue":n[0]||(n[0]=m=>l.newSoc=m),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[1]||(n[1]=m=>r.enter(1))},{default:t(()=>[a("1")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[2]||(n[2]=m=>r.enter(2))},{default:t(()=>[a("2")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[3]||(n[3]=m=>r.enter(3))},{default:t(()=>[a("3")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[4]||(n[4]=m=>r.enter(4))},{default:t(()=>[a("4")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[5]||(n[5]=m=>r.enter(5))},{default:t(()=>[a("5")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[6]||(n[6]=m=>r.enter(6))},{default:t(()=>[a("6")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[7]||(n[7]=m=>r.enter(7))},{default:t(()=>[a("7")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[8]||(n[8]=m=>r.enter(8))},{default:t(()=>[a("8")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[9]||(n[9]=m=>r.enter(9))},{default:t(()=>[a("9")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[10]||(n[10]=m=>r.clear())},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[11]||(n[11]=m=>r.enter(0))},{default:t(()=>[a("0")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[12]||(n[12]=m=>r.removeDigit())},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const Be=z(xe,[["render",ye],["__scopeId","data-v-4ad611a1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePoints/ManualSocInput.vue"]]);F.add(le,oe,ie,ae,Z,j,re,se,ce,de,ue,ge,he,me,Ce,fe,_e,pe,ve,Pe);const Te={name:"ChargePointsView",data(){return{mqttStore:N(),modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1}},props:{changesLocked:{required:!1,type:Boolean,default:!1}},components:{DashBoardCard:Y,SparkLine:$,ChargePointPlugBadge:ee,ChargePointLockButton:Ie,ExtendedNumberInput:O,ManualSocInput:Be,FontAwesomeIcon:U},computed:{vehicleList(){let i=this.mqttStore.getVehicleList;var n=[];return Object.keys(i).forEach(s=>{let f=parseInt(s.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));n.push({id:f,name:i[s]})}),n}},methods:{toggleChargePointSettings(i){this.modalChargePointId!=i&&(this.modalActiveTab="tab-general"),this.modalChargePointId=i,this.modalChargePointSettingsVisible=!0},handleSocClick(i){let n=this.mqttStore.getChargePointConnectedVehicleId(i);if(this.mqttStore.getVehicleSocIsManual(n)){this.modalVehicleId=n,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${n}/get/force_soc_update`,1)},setChargePointConnectedVehicle(i,n){n.id!=this.mqttStore.getChargePointConnectedVehicleId(i)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${i}/config/ev`,n.id)},setChargePointConnectedVehicleChargeMode(i,n){if(n.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/selected`,n)}},setChargePointConnectedVehiclePriority(i,n){if(n!=this.mqttStore.getChargePointConnectedVehiclePriority(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/prio`,n)}},setChargePointConnectedVehicleTimeChargingActive(i,n){if(n!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/time_charging/active`,n)}},setChargePointConnectedVehicleInstantChargingCurrent(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/current`,parseFloat(n))}},setChargePointConnectedVehicleInstantChargingLimit(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).selected){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/selected`,n)}},setChargePointConnectedVehicleInstantChargingLimitSoc(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).soc){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/soc`,parseInt(n))}},setChargePointConnectedVehicleInstantChargingLimitAmount(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).amount){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/amount`,n)}},setChargePointConnectedVehiclePvChargingFeedInLimit(i,n){if(n!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/pv_charging/feed_in_limit`,n)}},setChargePointConnectedVehiclePvChargingMinCurrent(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_current`,f)}},setChargePointConnectedVehiclePvChargingMinSoc(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_soc`,f)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_soc_current`,f)}},setChargePointConnectedVehiclePvChargingMaxSoc(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/max_soc`,f)}},setChargePointConnectedVehicleScheduledChargingPlanActive(i,n){this.$root.sendTopicToBroker(`${i}/active`,n)},setChargePointConnectedVehicleTimeChargingPlanActive(i,n){this.$root.sendTopicToBroker(`${i}/active`,n)}}},Le={class:"charge-points-card-wrapper"},Me={key:0},ze={key:0},Ae={key:1},We={key:2},Ne={key:3},Fe={key:4},Ue={key:0},Ee={key:1},De={key:2},Ze={key:3},je={key:4};function Oe(i,n,s,f,l,r){const S=d("charge-point-plug-badge"),_=d("charge-point-lock-button"),p=d("i-column"),h=d("i-row"),k=d("spark-line"),g=d("font-awesome-icon"),w=d("i-badge"),m=d("i-button"),A=d("i-container"),R=d("dash-board-card"),x=d("i-tab-title"),b=d("i-form-label"),E=d("i-select"),P=d("i-form-group"),X=d("i-select-option"),W=d("i-toggle"),y=d("i-form"),B=d("i-tab"),I=d("extended-number-input"),G=d("i-button-group"),D=d("i-alert"),H=d("i-tabs"),J=d("i-modal"),K=d("manual-soc-input");return c(),V(T,null,[be("div",Le,[(c(!0),V(T,null,L(l.mqttStore.getChargePointIds,o=>(c(),v(R,{key:o,color:"primary"},{headerLeft:t(()=>[a(C(l.mqttStore.getChargePointName(o)),1)]),headerRight:t(()=>[e(S,{chargePointId:[o]},null,8,["chargePointId"])]),default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[u(" charge point data on left side "),e(p,null,{default:t(()=>[e(h,null,{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0"},{default:t(()=>[e(_,{chargePointId:o,changesLocked:s.changesLocked},null,8,["chargePointId","changesLocked"])]),_:2},1024),e(p,{class:"_text-align:right _padding-left:0"},{default:t(()=>[a(C(l.mqttStore.getChargePointPower(o))+" "+C(l.mqttStore.getChargePointPhasesInUse(o))+" "+C(l.mqttStore.getChargePointSetCurrent(o)),1)]),_:2},1024)]),_:2},1024),e(h,{class:"_padding-top:1"},{default:t(()=>[e(p,{class:"_padding-left:0"},{default:t(()=>[e(k,{color:"var(--color--primary)",data:l.mqttStore.getChargePointPowerChartData(o)},null,8,["data"])]),_:2},1024)]),_:2},1024)]),_:2},1024),u(" vehicle data on right side "),e(p,{md:"6"},{default:t(()=>[u(" vehicle and soc "),e(h,{class:"_display:flex"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:t(()=>[e(w,{size:"lg",class:"full-width"},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-car"]}),a(" "+C(l.mqttStore.getChargePointConnectedVehicleName(o)),1)]),_:2},1024)]),_:2},1024),l.mqttStore.getVehicleSocConfigured(l.mqttStore.getChargePointConnectedVehicleId(o))||l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))!=0?(c(),v(p,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:t(()=>[e(m,{size:"sm",disabled:s.changesLocked,onClick:q=>r.handleSocClick(o)},{default:t(()=>[l.mqttStore.getVehicleSocConfigured(l.mqttStore.getChargePointConnectedVehicleId(o))?(c(),V("span",Me,[e(g,{"fixed-width":"",icon:l.mqttStore.getVehicleSocIsManual(l.mqttStore.getChargePointConnectedVehicleId(o))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),a(" "+C(l.mqttStore.getChargePointConnectedVehicleSoc(o).soc)+"% ",1)])):u("v-if",!0),l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))!=0?(c(),v(g,{key:1,"fixed-width":"",icon:l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>0?l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:M(l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>0?l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):u("v-if",!0)]),_:2},1032,["disabled","onClick"])]),_:2},1024)):u("v-if",!0)]),_:2},1024),u(" charge mode info "),e(h,{class:"_padding-top:1 _display:flex"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:t(()=>[e(w,{size:"lg",class:"full-width",color:l.mqttStore.getChargePointConnectedVehicleChargeMode(o).class},{default:t(()=>[a(C(l.mqttStore.getChargePointConnectedVehicleChargeMode(o).label),1)]),_:2},1032,["color"])]),_:2},1024),l.mqttStore.getChargePointConnectedVehiclePriority(o)||l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)?(c(),v(p,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:t(()=>[e(w,{size:"lg"},{default:t(()=>[l.mqttStore.getChargePointConnectedVehiclePriority(o)?(c(),v(g,{key:0,"fixed-width":"",icon:["fas","fa-star"],class:"_color:warning"})):u("v-if",!0),l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)?(c(),v(g,{key:1,"fixed-width":"",icon:l.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(o)?["fas","fa-clock"]:["far","fa-clock"],class:M(l.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(o)?"_color:success":"")},null,8,["icon","class"])):u("v-if",!0)]),_:2},1024)]),_:2},1024)):u("v-if",!0)]),_:2},1024),u(" settings button "),s.changesLocked?u("v-if",!0):(c(),v(h,{key:0,class:"_padding-top:1"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0"},{default:t(()=>[e(m,{block:"",onClick:q=>r.toggleChargePointSettings(o)},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1024))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),u(" modals "),u(" charge point settings "),e(J,{modelValue:l.modalChargePointSettingsVisible,"onUpdate:modelValue":n[16]||(n[16]=o=>l.modalChargePointSettingsVisible=o),size:"lg"},{header:t(()=>[a(' Einstellungen für Ladepunkt "'+C(l.mqttStore.getChargePointName(l.modalChargePointId))+'" ',1)]),default:t(()=>[e(H,{modelValue:l.modalActiveTab,"onUpdate:modelValue":n[15]||(n[15]=o=>l.modalActiveTab=o),stretch:""},{header:t(()=>[e(x,{for:"tab-general"},{default:t(()=>[a(" Allgemein ")]),_:1}),e(x,{for:"tab-instant-charging"},{default:t(()=>[a(" Sofort ")]),_:1}),e(x,{for:"tab-pv-charging"},{default:t(()=>[a(" PV ")]),_:1}),e(x,{for:"tab-scheduled-charging"},{default:t(()=>[a(" Zielladen ")]),_:1}),e(x,{for:"tab-time-charging"},{default:t(()=>[a(" Zeitladen ")]),_:1})]),default:t(()=>[e(B,{name:"tab-general"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-car"]}),a(" Fahrzeug ")]),_:1}),e(E,{size:"lg",disabled:!l.mqttStore.getChargePointVehicleChangePermitted(l.modalChargePointId),"model-value":l.mqttStore.getChargePointConnectedVehicleInfo(l.modalChargePointId),label:"name",options:r.vehicleList,placeholder:"Bitte auswählen..","onUpdate:modelValue":n[0]||(n[0]=o=>r.setChargePointConnectedVehicle(l.modalChargePointId,o))},null,8,["disabled","model-value","options"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Lademodus")]),_:1}),e(E,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehicleChargeMode(l.modalChargePointId),placeholder:"Bitte auswählen..","onUpdate:modelValue":n[1]||(n[1]=o=>r.setChargePointConnectedVehicleChargeMode(l.modalChargePointId,o))},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.chargeModeList(),o=>(c(),v(X,{key:o.id,value:o.id,label:o.label,class:M("_background:"+o.class)},null,8,["value","label","class"]))),128))]),_:1},8,["model-value"])]),_:1}),e(P,{inline:"",class:"_justify-content:space-around"},{default:t(()=>[e(P,{inline:""},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[e(g,{"fixed-width":"",icon:["far","fa-star"]}),a(" Priorität ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehiclePriority(l.modalChargePointId),"onUpdate:modelValue":n[2]||(n[2]=o=>r.setChargePointConnectedVehiclePriority(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,{inline:"",class:"_margin-top:0"},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[e(g,{"fixed-width":"",icon:["far","fa-clock"]}),a(" Zeitladen ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.modalChargePointId),"onUpdate:modelValue":n[3]||(n[3]=o=>r.setChargePointConnectedVehicleTimeChargingActive(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1}),e(B,{name:"tab-instant-charging"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Stromstärke")]),_:1}),e(I,{unit:"A",min:6,max:32,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(l.modalChargePointId),"onUpdate:modelValue":n[4]||(n[4]=o=>r.setChargePointConnectedVehicleInstantChargingCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Begrenzung")]),_:1}),e(G,{block:""},{default:t(()=>[e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="none"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="none",onClick:n[5]||(n[5]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"none"))},{default:t(()=>[a(" Keine ")]),_:1},8,["color","active"]),e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc",onClick:n[6]||(n[6]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"soc"))},{default:t(()=>[a(" EV-SoC ")]),_:1},8,["color","active"]),e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount",onClick:n[7]||(n[7]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"amount"))},{default:t(()=>[a(" Energie ")]),_:1},8,["color","active"])]),_:1})]),_:1}),l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc"?(c(),v(P,{key:0},{default:t(()=>[e(b,null,{default:t(()=>[a("Max. SoC")]),_:1}),e(I,{unit:"%",min:5,max:100,step:5,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).soc,"onUpdate:modelValue":n[8]||(n[8]=o=>r.setChargePointConnectedVehicleInstantChargingLimitSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})):u("v-if",!0),l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount"?(c(),v(P,{key:1},{default:t(()=>[e(b,null,{default:t(()=>[a("Max. Energie")]),_:1}),e(I,{unit:"kWh",min:1,max:100,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).amount/1e3,"onUpdate:modelValue":n[9]||(n[9]=o=>r.setChargePointConnectedVehicleInstantChargingLimitAmount(l.modalChargePointId,o*1e3))},null,8,["model-value"])]),_:1})):u("v-if",!0)]),_:1})]),_:1}),e(B,{name:"tab-pv-charging"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,{inline:""},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[a(" Einspeisegrenze beachten ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(l.modalChargePointId),"onUpdate:modelValue":n[10]||(n[10]=o=>r.setChargePointConnectedVehiclePvChargingFeedInLimit(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindeststrom")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(l.modalChargePointId),"onUpdate:modelValue":n[11]||(n[11]=o=>r.setChargePointConnectedVehiclePvChargingMinCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindest-SoC")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(l.modalChargePointId),"onUpdate:modelValue":n[12]||(n[12]=o=>r.setChargePointConnectedVehiclePvChargingMinSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindest-SoC Strom")]),_:1}),e(I,{min:6,max:32,unit:"A","model-value":l.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(l.modalChargePointId),"onUpdate:modelValue":n[13]||(n[13]=o=>r.setChargePointConnectedVehiclePvChargingMinSocCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("SoC-Limit")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(l.modalChargePointId),"onUpdate:modelValue":n[14]||(n[14]=o=>r.setChargePointConnectedVehiclePvChargingMaxSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),e(B,{name:"tab-scheduled-charging"},{default:t(()=>[Object.keys(l.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(l.modalChargePointId)).length===0?(c(),v(D,{key:0},{icon:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:t(()=>[a(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. ")]),_:1})):(c(),v(y,{key:1},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(l.modalChargePointId),(o,q)=>(c(),v(P,{key:q},{default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[e(b,null,{default:t(()=>[a(C(o.name),1)]),_:2},1024)]),_:2},1024),e(h,null,{default:t(()=>[e(m,{size:"lg",block:"",color:o.active?"success":"danger",onClick:Q=>r.setChargePointConnectedVehicleScheduledChargingPlanActive(q,!o.active)},{default:t(()=>[o.frequency.selected=="once"?(c(),V("span",ze,[e(g,{"fixed-width":"",icon:["fas","calendar-day"]}),a(" "+C(l.mqttStore.formatDate(o.frequency.once)),1)])):u("v-if",!0),o.frequency.selected=="daily"?(c(),V("span",Ae,[e(g,{"fixed-width":"",icon:["fas","calendar-week"]}),a(" täglich ")])):u("v-if",!0),o.frequency.selected=="weekly"?(c(),V("span",We,[e(g,{"fixed-width":"",icon:["fas","calendar-alt"]}),a(" "+C(l.mqttStore.formatWeeklyScheduleDays(o.frequency.weekly)),1)])):u("v-if",!0),e(g,{"fixed-width":"",icon:["fas","clock"]}),a(" "+C(o.time)+" ",1),o.limit.selected=="soc"?(c(),V("span",Ne,[e(g,{"fixed-width":"",icon:["fas","car-battery"]}),a(" "+C(o.limit.soc_scheduled)+" % ",1)])):u("v-if",!0),o.limit.selected=="amount"?(c(),V("span",Fe,[e(g,{"fixed-width":"",icon:["fas","bolt"]}),a(" "+C(o.limit.amount/1e3)+" kWh ",1)])):u("v-if",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1}),e(B,{name:"tab-time-charging"},{default:t(()=>[Object.keys(l.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(l.modalChargePointId)).length===0?(c(),v(D,{key:0},{icon:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:t(()=>[a(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. ")]),_:1})):(c(),v(y,{key:1},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(l.modalChargePointId),(o,q)=>(c(),v(P,{key:q},{default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[e(b,null,{default:t(()=>[a(C(o.name),1)]),_:2},1024)]),_:2},1024),e(h,null,{default:t(()=>[e(m,{size:"lg",block:"",color:o.active?"success":"danger",onClick:Q=>r.setChargePointConnectedVehicleTimeChargingPlanActive(q,!o.active)},{default:t(()=>[o.frequency.selected=="once"?(c(),V("span",Ue,[e(g,{"fixed-width":"",icon:["fas","calendar-day"]}),a(" "+C(l.mqttStore.formatDateRange(o.frequency.once)),1)])):u("v-if",!0),o.frequency.selected=="daily"?(c(),V("span",Ee,[e(g,{"fixed-width":"",icon:["fas","calendar-week"]}),a(" täglich ")])):u("v-if",!0),o.frequency.selected=="weekly"?(c(),V("span",De,[e(g,{"fixed-width":"",icon:["fas","calendar-alt"]}),a(" "+C(l.mqttStore.formatWeeklyScheduleDays(o.frequency.weekly)),1)])):u("v-if",!0),e(g,{"fixed-width":"",icon:["fas","clock"]}),a(" "+C(o.time.join("-"))+" ",1),o.limit.selected=="soc"?(c(),V("span",Ze,[e(g,{"fixed-width":"",icon:["fas","car-battery"]}),a(" "+C(o.limit.soc)+" % ",1)])):u("v-if",!0),o.limit.selected=="amount"?(c(),V("span",je,[e(g,{"fixed-width":"",icon:["fas","bolt"]}),a(" "+C(o.limit.amount/1e3)+" kWh ",1)])):u("v-if",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),u(" end charge point settings modal"),u(" manual soc input "),e(K,{vehicleId:l.modalVehicleId,modelValue:l.modalManualSocInputVisible,"onUpdate:modelValue":n[17]||(n[17]=o=>l.modalManualSocInputVisible=o)},null,8,["vehicleId","modelValue"]),u(" end manual soc input ")],64)}const Ke=z(Te,[["render",Oe],["__scopeId","data-v-dd5faf5e"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/ChargePointsView.vue"]]);export{Ke as default}; diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointsView-ad6342d8.js b/packages/modules/display_themes/cards/web/assets/ChargePointsView-ad6342d8.js deleted file mode 100644 index 1b9c7b9c7a..0000000000 --- a/packages/modules/display_themes/cards/web/assets/ChargePointsView-ad6342d8.js +++ /dev/null @@ -1 +0,0 @@ -import{u as N}from"./index-08d5fe3a.js";import{D as Y,S as $,C as ee}from"./ChargePointPlugBadge-b24b7772.js";import{l as F,f as Z,a as j,F as U,b as te,c as ne,j as le,k as oe,m as ie,n as ae,o as re,e as se,p as ce,q as de,r as ue,s as ge,t as he,u as me,v as Ce,w as fe,x as _e,y as pe,z as ve,A as Pe}from"./vendor-fortawesome-cc5e1458.js";import{l as d,o as c,n as v,p as t,s as e,z as M,k as a,x as C,i as u,I as Ve,e as V,j as be,F as T,A as L}from"./vendor-e07709f3.js";import{_ as z}from"./vendor-inkline-4a446dd5.js";F.add(Z,j);const Se={name:"ChargePointLockButton",props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:N()}},components:{FontAwesomeIcon:U},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function ke(i,n,s,f,l,r){const S=d("font-awesome-icon"),_=d("i-button");return c(),v(_,{size:"lg",disabled:s.changesLocked,outline:s.changesLocked},{default:t(()=>[e(S,{"fixed-width":"",icon:r.stateIcon,class:M(r.stateClass),onClick:n[0]||(n[0]=p=>r.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Ie=z(Se,[["render",ke],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePointLockButton.vue"]]),qe={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number},unit:{type:String},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var i;return this.labels&&this.inputValue!=null?this.inputValuer.label=p)},{prepend:t(()=>[e(S,{onClick:r.decrement},{default:t(()=>[a("-")]),_:1},8,["onClick"])]),suffix:t(()=>[a(C(s.unit),1)]),append:t(()=>[e(S,{onClick:r.increment},{default:t(()=>[a("+")]),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const O=z(qe,[["render",we],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ExtendedNumberInput.vue"]]);F.add(te,ne);const xe={name:"ManualSocInput",props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},data(){return{mqttStore:N(),newSoc:0}},components:{ExtendedNumberInput:O,FontAwesomeIcon:U},emits:["update:modelValue"],methods:{enter(i){let n=this.newSoc*10+i;n>=0&&n<=100&&(this.newSoc=n)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/configuration/soc_start`,this.newSoc),this.close()}}};function ye(i,n,s,f,l,r){const S=d("extended-number-input"),_=d("i-column"),p=d("i-row"),h=d("i-button"),k=d("i-container"),g=d("FontAwesomeIcon"),w=d("i-modal");return c(),v(Ve,{to:"body"},[e(w,{modelValue:s.modelValue,"onUpdate:modelValue":n[15]||(n[15]=m=>i.$emit("update:modelValue",m)),size:"sm"},{header:t(()=>[a(' SoC für Fahrzeug "'+C(l.mqttStore.getVehicleName(s.vehicleId))+'" ',1)]),footer:t(()=>[e(k,null,{default:t(()=>[e(p,null,{default:t(()=>[u(" charge point data on left side "),e(_,null,{default:t(()=>[e(h,{color:"danger",onClick:n[13]||(n[13]=m=>r.close())},{default:t(()=>[a(" Zurück ")]),_:1})]),_:1}),e(_,{class:"_text-align:right"},{default:t(()=>[e(h,{color:"success",onClick:n[14]||(n[14]=m=>r.updateManualSoc())},{default:t(()=>[a(" OK ")]),_:1})]),_:1})]),_:1})]),_:1})]),default:t(()=>[e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,null,{default:t(()=>[e(S,{modelValue:l.newSoc,"onUpdate:modelValue":n[0]||(n[0]=m=>l.newSoc=m),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[1]||(n[1]=m=>r.enter(1))},{default:t(()=>[a("1")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[2]||(n[2]=m=>r.enter(2))},{default:t(()=>[a("2")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[3]||(n[3]=m=>r.enter(3))},{default:t(()=>[a("3")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[4]||(n[4]=m=>r.enter(4))},{default:t(()=>[a("4")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[5]||(n[5]=m=>r.enter(5))},{default:t(()=>[a("5")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[6]||(n[6]=m=>r.enter(6))},{default:t(()=>[a("6")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[7]||(n[7]=m=>r.enter(7))},{default:t(()=>[a("7")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[8]||(n[8]=m=>r.enter(8))},{default:t(()=>[a("8")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[9]||(n[9]=m=>r.enter(9))},{default:t(()=>[a("9")]),_:1})]),_:1})]),_:1})]),_:1}),e(k,null,{default:t(()=>[e(p,{center:"",class:"_padding-bottom:1"},{default:t(()=>[e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[10]||(n[10]=m=>r.clear())},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[11]||(n[11]=m=>r.enter(0))},{default:t(()=>[a("0")]),_:1})]),_:1}),e(_,{class:"_flex-grow:0"},{default:t(()=>[e(h,{size:"lg",class:"numberButton",onClick:n[12]||(n[12]=m=>r.removeDigit())},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const Be=z(xe,[["render",ye],["__scopeId","data-v-4ad611a1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/ChargePoints/ManualSocInput.vue"]]);F.add(le,oe,ie,ae,Z,j,re,se,ce,de,ue,ge,he,me,Ce,fe,_e,pe,ve,Pe);const Te={name:"ChargePointsView",data(){return{mqttStore:N(),modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1}},props:{changesLocked:{required:!1,type:Boolean,default:!1}},components:{DashBoardCard:Y,SparkLine:$,ChargePointPlugBadge:ee,ChargePointLockButton:Ie,ExtendedNumberInput:O,ManualSocInput:Be,FontAwesomeIcon:U},computed:{vehicleList(){let i=this.mqttStore.getVehicleList;var n=[];return Object.keys(i).forEach(s=>{let f=parseInt(s.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));n.push({id:f,name:i[s]})}),n}},methods:{toggleChargePointSettings(i){this.modalChargePointId!=i&&(this.modalActiveTab="tab-general"),this.modalChargePointId=i,this.modalChargePointSettingsVisible=!0},handleSocClick(i){let n=this.mqttStore.getChargePointConnectedVehicleId(i);if(this.mqttStore.getVehicleSocIsManual(n)){this.modalVehicleId=n,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${n}/get/force_soc_update`,1)},setChargePointConnectedVehicle(i,n){n.id!=this.mqttStore.getChargePointConnectedVehicleId(i)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${i}/config/ev`,n.id)},setChargePointConnectedVehicleChargeMode(i,n){if(n.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/selected`,n)}},setChargePointConnectedVehiclePriority(i,n){if(n!=this.mqttStore.getChargePointConnectedVehiclePriority(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/prio`,n)}},setChargePointConnectedVehicleTimeChargingActive(i,n){if(n!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/time_charging/active`,n)}},setChargePointConnectedVehicleInstantChargingCurrent(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/current`,parseFloat(n))}},setChargePointConnectedVehicleInstantChargingLimit(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).selected){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/selected`,n)}},setChargePointConnectedVehicleInstantChargingLimitSoc(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).soc){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/soc`,parseInt(n))}},setChargePointConnectedVehicleInstantChargingLimitAmount(i,n){if(n&&n!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(i).amount){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/instant_charging/limit/amount`,n)}},setChargePointConnectedVehiclePvChargingFeedInLimit(i,n){if(n!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(i)){var s=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${s}/chargemode/pv_charging/feed_in_limit`,n)}},setChargePointConnectedVehiclePvChargingMinCurrent(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_current`,f)}},setChargePointConnectedVehiclePvChargingMinSoc(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_soc`,f)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/min_soc_current`,f)}},setChargePointConnectedVehiclePvChargingMaxSoc(i,n){let s=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(i),f=parseInt(n);if(f!=s&&!isNaN(f)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(i);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/max_soc`,f)}},setChargePointConnectedVehicleScheduledChargingPlanActive(i,n){this.$root.sendTopicToBroker(`${i}/active`,n)},setChargePointConnectedVehicleTimeChargingPlanActive(i,n){this.$root.sendTopicToBroker(`${i}/active`,n)}}},Le={class:"charge-points-card-wrapper"},Me={key:0},ze={key:0},Ae={key:1},We={key:2},Ne={key:3},Fe={key:4},Ue={key:0},Ee={key:1},De={key:2},Ze={key:3},je={key:4};function Oe(i,n,s,f,l,r){const S=d("charge-point-plug-badge"),_=d("charge-point-lock-button"),p=d("i-column"),h=d("i-row"),k=d("spark-line"),g=d("font-awesome-icon"),w=d("i-badge"),m=d("i-button"),A=d("i-container"),R=d("dash-board-card"),x=d("i-tab-title"),b=d("i-form-label"),E=d("i-select"),P=d("i-form-group"),X=d("i-select-option"),W=d("i-toggle"),y=d("i-form"),B=d("i-tab"),I=d("extended-number-input"),G=d("i-button-group"),D=d("i-alert"),H=d("i-tabs"),J=d("i-modal"),K=d("manual-soc-input");return c(),V(T,null,[be("div",Le,[(c(!0),V(T,null,L(l.mqttStore.getChargePointIds,o=>(c(),v(R,{key:o,color:"primary"},{headerLeft:t(()=>[a(C(l.mqttStore.getChargePointName(o)),1)]),headerRight:t(()=>[e(S,{chargePointId:[o]},null,8,["chargePointId"])]),default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[u(" charge point data on left side "),e(p,null,{default:t(()=>[e(h,null,{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0"},{default:t(()=>[e(_,{chargePointId:o,changesLocked:s.changesLocked},null,8,["chargePointId","changesLocked"])]),_:2},1024),e(p,{class:"_text-align:right _padding-left:0"},{default:t(()=>[a(C(l.mqttStore.getChargePointPower(o))+" "+C(l.mqttStore.getChargePointPhasesInUse(o))+" "+C(l.mqttStore.getChargePointSetCurrent(o)),1)]),_:2},1024)]),_:2},1024),e(h,{class:"_padding-top:1"},{default:t(()=>[e(p,{class:"_padding-left:0"},{default:t(()=>[e(k,{color:"var(--color--primary)",data:l.mqttStore.getChargePointPowerChartData(o)},null,8,["data"])]),_:2},1024)]),_:2},1024)]),_:2},1024),u(" vehicle data on right side "),e(p,{md:"6"},{default:t(()=>[u(" vehicle and soc "),e(h,{class:"_display:flex"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:t(()=>[e(w,{size:"lg",class:"full-width"},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-car"]}),a(" "+C(l.mqttStore.getChargePointConnectedVehicleName(o)),1)]),_:2},1024)]),_:2},1024),l.mqttStore.getVehicleSocConfigured(l.mqttStore.getChargePointConnectedVehicleId(o))||l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))!=0?(c(),v(p,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:t(()=>[e(m,{size:"sm",disabled:s.changesLocked,onClick:q=>r.handleSocClick(o)},{default:t(()=>[l.mqttStore.getVehicleSocConfigured(l.mqttStore.getChargePointConnectedVehicleId(o))?(c(),V("span",Me,[e(g,{"fixed-width":"",icon:l.mqttStore.getVehicleSocIsManual(l.mqttStore.getChargePointConnectedVehicleId(o))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),a(" "+C(l.mqttStore.getChargePointConnectedVehicleSoc(o).soc)+"% ",1)])):u("v-if",!0),l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))!=0?(c(),v(g,{key:1,"fixed-width":"",icon:l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>0?l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:M(l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>0?l.mqttStore.getVehicleFaultState(l.mqttStore.getChargePointConnectedVehicleId(o))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):u("v-if",!0)]),_:2},1032,["disabled","onClick"])]),_:2},1024)):u("v-if",!0)]),_:2},1024),u(" charge mode info "),e(h,{class:"_padding-top:1 _display:flex"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:t(()=>[e(w,{size:"lg",class:"full-width",color:l.mqttStore.getChargePointConnectedVehicleChargeMode(o).class},{default:t(()=>[a(C(l.mqttStore.getChargePointConnectedVehicleChargeMode(o).label),1)]),_:2},1032,["color"])]),_:2},1024),l.mqttStore.getChargePointConnectedVehiclePriority(o)||l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)?(c(),v(p,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:t(()=>[e(w,{size:"lg"},{default:t(()=>[l.mqttStore.getChargePointConnectedVehiclePriority(o)?(c(),v(g,{key:0,"fixed-width":"",icon:["fas","fa-star"],class:"_color:warning"})):u("v-if",!0),l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)?(c(),v(g,{key:1,"fixed-width":"",icon:l.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(o)?["fas","fa-clock"]:["far","fa-clock"],class:M(l.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(o)?"_color:success":"")},null,8,["icon","class"])):u("v-if",!0)]),_:2},1024)]),_:2},1024)):u("v-if",!0)]),_:2},1024),u(" settings button "),s.changesLocked?u("v-if",!0):(c(),v(h,{key:0,class:"_padding-top:1"},{default:t(()=>[e(p,{class:"_padding-left:0 _padding-right:0"},{default:t(()=>[e(m,{block:"",onClick:q=>r.toggleChargePointSettings(o)},{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1024))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),u(" modals "),u(" charge point settings "),e(J,{modelValue:l.modalChargePointSettingsVisible,"onUpdate:modelValue":n[16]||(n[16]=o=>l.modalChargePointSettingsVisible=o),size:"lg"},{header:t(()=>[a(' Einstellungen für Ladepunkt "'+C(l.mqttStore.getChargePointName(l.modalChargePointId))+'" ',1)]),default:t(()=>[e(H,{modelValue:l.modalActiveTab,"onUpdate:modelValue":n[15]||(n[15]=o=>l.modalActiveTab=o),stretch:""},{header:t(()=>[e(x,{for:"tab-general"},{default:t(()=>[a(" Allgemein ")]),_:1}),e(x,{for:"tab-instant-charging"},{default:t(()=>[a(" Sofort ")]),_:1}),e(x,{for:"tab-pv-charging"},{default:t(()=>[a(" PV ")]),_:1}),e(x,{for:"tab-scheduled-charging"},{default:t(()=>[a(" Zielladen ")]),_:1}),e(x,{for:"tab-time-charging"},{default:t(()=>[a(" Zeitladen ")]),_:1})]),default:t(()=>[e(B,{name:"tab-general"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-car"]}),a(" Fahrzeug ")]),_:1}),e(E,{size:"lg",disabled:!l.mqttStore.getChargePointVehicleChangePermitted(l.modalChargePointId),"model-value":l.mqttStore.getChargePointConnectedVehicleInfo(l.modalChargePointId),label:"name",options:r.vehicleList,placeholder:"Bitte auswählen..","onUpdate:modelValue":n[0]||(n[0]=o=>r.setChargePointConnectedVehicle(l.modalChargePointId,o))},null,8,["disabled","model-value","options"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Lademodus")]),_:1}),e(E,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehicleChargeMode(l.modalChargePointId),placeholder:"Bitte auswählen..","onUpdate:modelValue":n[1]||(n[1]=o=>r.setChargePointConnectedVehicleChargeMode(l.modalChargePointId,o))},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.chargeModeList(),o=>(c(),v(X,{key:o.id,value:o.id,label:o.label,class:M("_background:"+o.class)},null,8,["value","label","class"]))),128))]),_:1},8,["model-value"])]),_:1}),e(P,{inline:"",class:"_justify-content:space-around"},{default:t(()=>[e(P,{inline:""},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[e(g,{"fixed-width":"",icon:["far","fa-star"]}),a(" Priorität ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehiclePriority(l.modalChargePointId),"onUpdate:modelValue":n[2]||(n[2]=o=>r.setChargePointConnectedVehiclePriority(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,{inline:"",class:"_margin-top:0"},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[e(g,{"fixed-width":"",icon:["far","fa-clock"]}),a(" Zeitladen ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.modalChargePointId),"onUpdate:modelValue":n[3]||(n[3]=o=>r.setChargePointConnectedVehicleTimeChargingActive(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1}),e(B,{name:"tab-instant-charging"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Stromstärke")]),_:1}),e(I,{unit:"A",min:6,max:32,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(l.modalChargePointId),"onUpdate:modelValue":n[4]||(n[4]=o=>r.setChargePointConnectedVehicleInstantChargingCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Begrenzung")]),_:1}),e(G,{block:""},{default:t(()=>[e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="none"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="none",onClick:n[5]||(n[5]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"none"))},{default:t(()=>[a(" Keine ")]),_:1},8,["color","active"]),e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc",onClick:n[6]||(n[6]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"soc"))},{default:t(()=>[a(" EV-SoC ")]),_:1},8,["color","active"]),e(m,{color:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount"?"primary":"",active:l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount",onClick:n[7]||(n[7]=o=>r.setChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId,"amount"))},{default:t(()=>[a(" Energie ")]),_:1},8,["color","active"])]),_:1})]),_:1}),l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="soc"?(c(),v(P,{key:0},{default:t(()=>[e(b,null,{default:t(()=>[a("Max. SoC")]),_:1}),e(I,{unit:"%",min:5,max:100,step:5,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).soc,"onUpdate:modelValue":n[8]||(n[8]=o=>r.setChargePointConnectedVehicleInstantChargingLimitSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})):u("v-if",!0),l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).selected=="amount"?(c(),v(P,{key:1},{default:t(()=>[e(b,null,{default:t(()=>[a("Max. Energie")]),_:1}),e(I,{unit:"kWh",min:1,max:100,"model-value":l.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(l.modalChargePointId).amount/1e3,"onUpdate:modelValue":n[9]||(n[9]=o=>r.setChargePointConnectedVehicleInstantChargingLimitAmount(l.modalChargePointId,o*1e3))},null,8,["model-value"])]),_:1})):u("v-if",!0)]),_:1})]),_:1}),e(B,{name:"tab-pv-charging"},{default:t(()=>[e(y,null,{default:t(()=>[e(P,{inline:""},{default:t(()=>[e(b,{placement:"left",class:"_align-items:center"},{default:t(()=>[a(" Einspeisegrenze beachten ")]),_:1}),e(W,{size:"lg","model-value":l.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(l.modalChargePointId),"onUpdate:modelValue":n[10]||(n[10]=o=>r.setChargePointConnectedVehiclePvChargingFeedInLimit(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindeststrom")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(l.modalChargePointId),"onUpdate:modelValue":n[11]||(n[11]=o=>r.setChargePointConnectedVehiclePvChargingMinCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindest-SoC")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(l.modalChargePointId),"onUpdate:modelValue":n[12]||(n[12]=o=>r.setChargePointConnectedVehiclePvChargingMinSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("Mindest-SoC Strom")]),_:1}),e(I,{min:6,max:32,unit:"A","model-value":l.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(l.modalChargePointId),"onUpdate:modelValue":n[13]||(n[13]=o=>r.setChargePointConnectedVehiclePvChargingMinSocCurrent(l.modalChargePointId,o))},null,8,["model-value"])]),_:1}),e(P,null,{default:t(()=>[e(b,null,{default:t(()=>[a("SoC-Limit")]),_:1}),e(I,{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":l.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(l.modalChargePointId),"onUpdate:modelValue":n[14]||(n[14]=o=>r.setChargePointConnectedVehiclePvChargingMaxSoc(l.modalChargePointId,o))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),e(B,{name:"tab-scheduled-charging"},{default:t(()=>[Object.keys(l.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(l.modalChargePointId)).length===0?(c(),v(D,{key:0},{icon:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:t(()=>[a(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. ")]),_:1})):(c(),v(y,{key:1},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(l.modalChargePointId),(o,q)=>(c(),v(P,{key:q},{default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[e(b,null,{default:t(()=>[a(C(o.name),1)]),_:2},1024)]),_:2},1024),e(h,null,{default:t(()=>[e(m,{size:"lg",block:"",color:o.active?"success":"danger",onClick:Q=>r.setChargePointConnectedVehicleScheduledChargingPlanActive(q,!o.active)},{default:t(()=>[o.frequency.selected=="once"?(c(),V("span",ze,[e(g,{"fixed-width":"",icon:["fas","calendar-day"]}),a(" "+C(l.mqttStore.formatDate(o.frequency.once)),1)])):u("v-if",!0),o.frequency.selected=="daily"?(c(),V("span",Ae,[e(g,{"fixed-width":"",icon:["fas","calendar-week"]}),a(" täglich ")])):u("v-if",!0),o.frequency.selected=="weekly"?(c(),V("span",We,[e(g,{"fixed-width":"",icon:["fas","calendar-alt"]}),a(" "+C(l.mqttStore.formatWeeklyScheduleDays(o.frequency.weekly)),1)])):u("v-if",!0),e(g,{"fixed-width":"",icon:["fas","clock"]}),a(" "+C(o.time)+" ",1),o.limit.selected=="soc"?(c(),V("span",Ne,[e(g,{"fixed-width":"",icon:["fas","car-battery"]}),a(" "+C(o.limit.soc_scheduled)+" % ",1)])):u("v-if",!0),o.limit.selected=="amount"?(c(),V("span",Fe,[e(g,{"fixed-width":"",icon:["fas","bolt"]}),a(" "+C(o.limit.amount/1e3)+" kWh ",1)])):u("v-if",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1}),e(B,{name:"tab-time-charging"},{default:t(()=>[Object.keys(l.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(l.modalChargePointId)).length===0?(c(),v(D,{key:0},{icon:t(()=>[e(g,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:t(()=>[a(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. ")]),_:1})):(c(),v(y,{key:1},{default:t(()=>[(c(!0),V(T,null,L(l.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(l.modalChargePointId),(o,q)=>(c(),v(P,{key:q},{default:t(()=>[e(A,null,{default:t(()=>[e(h,null,{default:t(()=>[e(b,null,{default:t(()=>[a(C(o.name),1)]),_:2},1024)]),_:2},1024),e(h,null,{default:t(()=>[e(m,{size:"lg",block:"",color:o.active?"success":"danger",onClick:Q=>r.setChargePointConnectedVehicleTimeChargingPlanActive(q,!o.active)},{default:t(()=>[o.frequency.selected=="once"?(c(),V("span",Ue,[e(g,{"fixed-width":"",icon:["fas","calendar-day"]}),a(" "+C(l.mqttStore.formatDateRange(o.frequency.once)),1)])):u("v-if",!0),o.frequency.selected=="daily"?(c(),V("span",Ee,[e(g,{"fixed-width":"",icon:["fas","calendar-week"]}),a(" täglich ")])):u("v-if",!0),o.frequency.selected=="weekly"?(c(),V("span",De,[e(g,{"fixed-width":"",icon:["fas","calendar-alt"]}),a(" "+C(l.mqttStore.formatWeeklyScheduleDays(o.frequency.weekly)),1)])):u("v-if",!0),e(g,{"fixed-width":"",icon:["fas","clock"]}),a(" "+C(o.time.join("-"))+" ",1),o.limit.selected=="soc"?(c(),V("span",Ze,[e(g,{"fixed-width":"",icon:["fas","car-battery"]}),a(" "+C(o.limit.soc)+" % ",1)])):u("v-if",!0),o.limit.selected=="amount"?(c(),V("span",je,[e(g,{"fixed-width":"",icon:["fas","bolt"]}),a(" "+C(o.limit.amount/1e3)+" kWh ",1)])):u("v-if",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),u(" end charge point settings modal"),u(" manual soc input "),e(K,{vehicleId:l.modalVehicleId,modelValue:l.modalManualSocInputVisible,"onUpdate:modelValue":n[17]||(n[17]=o=>l.modalManualSocInputVisible=o)},null,8,["vehicleId","modelValue"]),u(" end manual soc input ")],64)}const Ke=z(Te,[["render",Oe],["__scopeId","data-v-dd5faf5e"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/ChargePointsView.vue"]]);export{Ke as default}; diff --git a/packages/modules/display_themes/cards/web/assets/DashBoardView-ec89d659.js b/packages/modules/display_themes/cards/web/assets/DashBoardView-4f849640.js similarity index 97% rename from packages/modules/display_themes/cards/web/assets/DashBoardView-ec89d659.js rename to packages/modules/display_themes/cards/web/assets/DashBoardView-4f849640.js index a410b2bbaa..14bf4b1602 100644 --- a/packages/modules/display_themes/cards/web/assets/DashBoardView-ec89d659.js +++ b/packages/modules/display_themes/cards/web/assets/DashBoardView-4f849640.js @@ -1 +1 @@ -import{u as p}from"./index-08d5fe3a.js";import{D as C,S,C as k}from"./ChargePointPlugBadge-b24b7772.js";import{l as v,d as B,F as P,e as b,g as D,h as x,i as I}from"./vendor-fortawesome-cc5e1458.js";import{l as t,o as s,n as d,p as o,s as c,k as _,x as m,i,e as H}from"./vendor-e07709f3.js";import{_ as h}from"./vendor-inkline-4a446dd5.js";v.add(B);const V={name:"GridCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function L(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return s(),d(n,{color:"danger"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),_(" EVU ")]),headerRight:o(()=>[_(m(e.mqttStore.getGridPower),1)]),default:o(()=>[c(a,{color:"var(--color--danger)",colorNegative:"var(--color--success)",data:e.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const E=h(V,[["render",L],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/GridCard.vue"]]);v.add(b);const G={name:"BatteryCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function W(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return e.mqttStore.getBatteryConfigured?(s(),d(n,{key:0,color:"warning"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-car-battery"]}),_(" Speicher ")]),headerRight:o(()=>[_(m(e.mqttStore.getBatterySoc)+" / "+m(e.mqttStore.getBatteryPower),1)]),default:o(()=>[c(a,{color:"var(--color--warning)",data:e.mqttStore.getBatteryPowerChartData,socData:e.mqttStore.getBatterySocChartData},null,8,["data","socData"])]),_:1})):i("v-if",!0)}const N=h(G,[["render",W],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/BatteryCard.vue"]]);v.add(D);const R={name:"InverterCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function $(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return e.mqttStore.getPvConfigured?(s(),d(n,{key:0,color:"success"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),_(" PV ")]),headerRight:o(()=>[_(m(e.mqttStore.getPvPower),1)]),default:o(()=>[c(a,{color:"var(--color--success)",data:e.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):i("v-if",!0)}const F=h(R,[["render",$],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/InverterCard.vue"]]);v.add(x);const A={name:"HomeCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function M(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return s(),d(n,{color:"light"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-home"]}),_(" Hausverbrauch ")]),headerRight:o(()=>[_(m(e.mqttStore.getHomePower),1)]),default:o(()=>[c(a,{color:"var(--color--light)",data:e.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const T=h(A,[["render",M],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/HomeCard.vue"]]);v.add(I);const U={name:"ChargePointsCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P,ChargePointPlugBadge:k}};function j(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("charge-point-plug-badge"),n=t("spark-line"),q=t("dash-board-card");return e.mqttStore.getChargePointIds.length>0?(s(),d(q,{key:0,color:"primary"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-charging-station"]}),_(" "+m(e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointName(e.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[_(m(e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointPower(e.mqttStore.getChargePointIds[0]):e.mqttStore.getChargePointSumPower)+" ",1),c(a,{chargePointId:e.mqttStore.getChargePointIds},null,8,["chargePointId"])]),default:o(()=>[c(n,{color:"var(--color--primary)",data:e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointPowerChartData(e.mqttStore.getChargePointIds[0]):e.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):i("v-if",!0)}const z=h(U,[["render",j],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/ChargePointsCard.vue"]]);const J={name:"DashboardView",props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:p()}},components:{GridCard:E,HomeCard:T,BatteryCard:N,InverterCard:F,ChargePointsCard:z}},K={class:"dash-board-card-wrapper"};function O(l,g,f,u,e,w){const r=t("grid-card"),a=t("home-card"),n=t("battery-card"),q=t("inverter-card"),y=t("charge-points-card");return s(),H("div",K,[e.mqttStore.getGridCardEnabled?(s(),d(r,{key:0})):i("v-if",!0),e.mqttStore.getHomeCardEnabled?(s(),d(a,{key:1})):i("v-if",!0),e.mqttStore.getBatteryCardEnabled?(s(),d(n,{key:2})):i("v-if",!0),e.mqttStore.getPvCardEnabled?(s(),d(q,{key:3})):i("v-if",!0),e.mqttStore.getChargePointsCardEnabled?(s(),d(y,{key:4})):i("v-if",!0)])}const te=h(J,[["render",O],["__scopeId","data-v-4e1e3ea5"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/DashBoardView.vue"]]);export{te as default}; +import{u as p}from"./index-2bb46dc7.js";import{D as C,S,C as k}from"./ChargePointPlugBadge-918c9082.js";import{l as v,d as B,F as P,e as b,g as D,h as x,i as I}from"./vendor-fortawesome-cc5e1458.js";import{l as t,o as s,n as d,p as o,s as c,k as _,x as m,i,e as H}from"./vendor-e07709f3.js";import{_ as h}from"./vendor-inkline-4a446dd5.js";v.add(B);const V={name:"GridCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function L(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return s(),d(n,{color:"danger"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),_(" EVU ")]),headerRight:o(()=>[_(m(e.mqttStore.getGridPower),1)]),default:o(()=>[c(a,{color:"var(--color--danger)",colorNegative:"var(--color--success)",data:e.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const E=h(V,[["render",L],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/GridCard.vue"]]);v.add(b);const G={name:"BatteryCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function W(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return e.mqttStore.getBatteryConfigured?(s(),d(n,{key:0,color:"warning"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-car-battery"]}),_(" Speicher ")]),headerRight:o(()=>[_(m(e.mqttStore.getBatterySoc)+" / "+m(e.mqttStore.getBatteryPower),1)]),default:o(()=>[c(a,{color:"var(--color--warning)",data:e.mqttStore.getBatteryPowerChartData,socData:e.mqttStore.getBatterySocChartData},null,8,["data","socData"])]),_:1})):i("v-if",!0)}const N=h(G,[["render",W],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/BatteryCard.vue"]]);v.add(D);const R={name:"InverterCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function $(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return e.mqttStore.getPvConfigured?(s(),d(n,{key:0,color:"success"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),_(" PV ")]),headerRight:o(()=>[_(m(e.mqttStore.getPvPower),1)]),default:o(()=>[c(a,{color:"var(--color--success)",data:e.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):i("v-if",!0)}const F=h(R,[["render",$],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/InverterCard.vue"]]);v.add(x);const A={name:"HomeCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P}};function M(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("spark-line"),n=t("dash-board-card");return s(),d(n,{color:"light"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-home"]}),_(" Hausverbrauch ")]),headerRight:o(()=>[_(m(e.mqttStore.getHomePower),1)]),default:o(()=>[c(a,{color:"var(--color--light)",data:e.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const T=h(A,[["render",M],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/HomeCard.vue"]]);v.add(I);const U={name:"ChargePointsCard",props:{},data(){return{mqttStore:p()}},components:{DashBoardCard:C,SparkLine:S,FontAwesomeIcon:P,ChargePointPlugBadge:k}};function j(l,g,f,u,e,w){const r=t("font-awesome-icon"),a=t("charge-point-plug-badge"),n=t("spark-line"),q=t("dash-board-card");return e.mqttStore.getChargePointIds.length>0?(s(),d(q,{key:0,color:"primary"},{headerLeft:o(()=>[c(r,{"fixed-width":"",icon:["fas","fa-charging-station"]}),_(" "+m(e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointName(e.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[_(m(e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointPower(e.mqttStore.getChargePointIds[0]):e.mqttStore.getChargePointSumPower)+" ",1),c(a,{chargePointId:e.mqttStore.getChargePointIds},null,8,["chargePointId"])]),default:o(()=>[c(n,{color:"var(--color--primary)",data:e.mqttStore.getChargePointIds.length==1?e.mqttStore.getChargePointPowerChartData(e.mqttStore.getChargePointIds[0]):e.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):i("v-if",!0)}const z=h(U,[["render",j],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DashBoard/ChargePointsCard.vue"]]);const J={name:"DashboardView",props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:p()}},components:{GridCard:E,HomeCard:T,BatteryCard:N,InverterCard:F,ChargePointsCard:z}},K={class:"dash-board-card-wrapper"};function O(l,g,f,u,e,w){const r=t("grid-card"),a=t("home-card"),n=t("battery-card"),q=t("inverter-card"),y=t("charge-points-card");return s(),H("div",K,[e.mqttStore.getGridCardEnabled?(s(),d(r,{key:0})):i("v-if",!0),e.mqttStore.getHomeCardEnabled?(s(),d(a,{key:1})):i("v-if",!0),e.mqttStore.getBatteryCardEnabled?(s(),d(n,{key:2})):i("v-if",!0),e.mqttStore.getPvCardEnabled?(s(),d(q,{key:3})):i("v-if",!0),e.mqttStore.getChargePointsCardEnabled?(s(),d(y,{key:4})):i("v-if",!0)])}const te=h(J,[["render",O],["__scopeId","data-v-4e1e3ea5"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/DashBoardView.vue"]]);export{te as default}; diff --git a/packages/modules/display_themes/cards/web/assets/StatusView-27618a07.js b/packages/modules/display_themes/cards/web/assets/StatusView-6530618e.js similarity index 86% rename from packages/modules/display_themes/cards/web/assets/StatusView-27618a07.js rename to packages/modules/display_themes/cards/web/assets/StatusView-6530618e.js index fa56cbd2df..5db93d740d 100644 --- a/packages/modules/display_themes/cards/web/assets/StatusView-27618a07.js +++ b/packages/modules/display_themes/cards/web/assets/StatusView-6530618e.js @@ -1 +1 @@ -import{u as e}from"./index-08d5fe3a.js";import{_ as t}from"./vendor-inkline-4a446dd5.js";import"./vendor-e07709f3.js";import"./vendor-fortawesome-cc5e1458.js";const s={name:"StatusView",props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:e()}}};function r(a,o,p,u,c,i){return"Status"}const f=t(s,[["render",r],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/StatusView.vue"]]);export{f as default}; +import{u as e}from"./index-2bb46dc7.js";import{_ as t}from"./vendor-inkline-4a446dd5.js";import"./vendor-e07709f3.js";import"./vendor-fortawesome-cc5e1458.js";const s={name:"StatusView",props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:e()}}};function r(a,o,p,u,c,i){return"Status"}const f=t(s,[["render",r],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/StatusView.vue"]]);export{f as default}; diff --git a/packages/modules/display_themes/cards/web/assets/index-08d5fe3a.js b/packages/modules/display_themes/cards/web/assets/index-2bb46dc7.js similarity index 98% rename from packages/modules/display_themes/cards/web/assets/index-08d5fe3a.js rename to packages/modules/display_themes/cards/web/assets/index-2bb46dc7.js index 743dcb5bef..3c910f2864 100644 --- a/packages/modules/display_themes/cards/web/assets/index-08d5fe3a.js +++ b/packages/modules/display_themes/cards/web/assets/index-2bb46dc7.js @@ -1,3 +1,3 @@ import{o as f,e as T,k as u,x as W,j as V,F as S,H as L,l as d,n as C,p as i,f as I,i as v,s as a,z as x,I as E,R as q,J as N,K as O,L as F,M,N as R,O as A,P as z}from"./vendor-e07709f3.js";import{_ as b,I as U,c as j}from"./vendor-inkline-4a446dd5.js";import{l as G,f as H,a as J,b as K,c as Z,F as Y}from"./vendor-fortawesome-cc5e1458.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const c of n.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&s(c)}).observe(document,{childList:!0,subtree:!0});function o(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function s(r){if(r.ep)return;r.ep=!0;const n=o(r);fetch(r.href,n)}})();const Q={name:"DateTime",props:{separator:{String,default:"
"}},data(){return{dateTimeInterval:"",date:"",time:""}},methods:{update(){const e=new Date,t={weekday:"short",year:"numeric",month:"2-digit",day:"2-digit"},o={hour:"2-digit",minute:"2-digit",second:"2-digit"};this.date=e.toLocaleDateString(void 0,t),this.time=e.toLocaleTimeString(void 0,o)}},mounted(){this.update(),this.dateTimeInterval=setInterval(this.update,1e3)},beforeUnmount(){clearInterval(this.dateTimeInterval)}},X=["innerHTML"];function ee(e,t,o,s,r,n){return f(),T(S,null,[u(W(r.time),1),V("span",{innerHTML:o.separator},null,8,X),u(W(r.date),1)],64)}const te=b(Q,[["render",ee],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/DateTime.vue"]]),B=L("mqtt",{state:()=>({settings:{parentChargePoint1:void 0,parentChargePoint2:void 0},topics:{},chartData:{}}),getters:{getChargePointFilter:e=>{let t=[];return e.settings.parentChargePoint1!==void 0&&t.push(e.settings.parentChargePoint1),e.settings.parentChargePoint2!==void 0&&t.push(e.settings.parentChargePoint2),t},getWildcardIndexList:e=>(t,o=!1)=>{let s=t;o||(s="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let r=Object.keys(e.topics).filter(n=>n.match(s));return r.forEach((n,c,l)=>{l[c]=parseInt(n.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),r},getWildcardTopics:e=>(t,o=!1)=>{let s=t;return o||(s="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(e.topics).filter(r=>r.match(s)).reduce((r,n)=>({...r,[n]:e.topics[n]}),{})},getObjectIds:e=>t=>{function o(s){let r=[];return s!==void 0&&s.forEach(n=>{n.type==t&&r.push(n.id),r=[...r,...o(n.children)]}),r}return o(e.topics["openWB/counter/get/hierarchy"])},getValueBool:e=>(t,o=!1)=>{let s=e.topics[t];return s!==void 0?s:(console.warn("topic not found! using default",t,o),o)},getValueString:e=>(t,o="W",s=!1,r="---")=>{var n="",c=e.topics[t];if(c===void 0)console.warn("topic not found! using default",t,r),l=r;else{s&&(c*=-1);var l=c.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0});(c>999||c<-999)&&(l=(c/1e3).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),n="k",(c>999999||c<-999999)&&(l=(c/1e6).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),n="M"))}return`${l} ${n}${o}`},getChartData:e=>t=>e.chartData[t]===void 0?[]:e.chartData[t],getThemeConfiguration:e=>{if("openWB/optional/int_display/theme"in e.topics&&e.topics["openWB/optional/int_display/theme"]!==void 0&&"configuration"in e.topics["openWB/optional/int_display/theme"])return e.topics["openWB/optional/int_display/theme"].configuration},getDashBoardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_view:!0},getChargePointsEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_charge_points_view:!0},getStateEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_status_view:!0},getGridCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_grid:!0},getHomeCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_home_consumption:!0},getBatteryCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_battery_sum:!0},getChargePointsCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_charge_point_sum:!0},getPvCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_inverter_sum:!0},getLockChanges(e){return e.getThemeConfiguration?e.getThemeConfiguration.lock_changes:!0},getGridId(e){let t=e.topics["openWB/counter/get/hierarchy"];if(t!==void 0&&Object.keys(t).length>0){let o=Object.keys(e.topics["openWB/counter/get/hierarchy"])[0];if(console.debug("getGridId",o,e.topics["openWB/counter/get/hierarchy"][o]),e.topics["openWB/counter/get/hierarchy"][o].type=="counter")return e.topics["openWB/counter/get/hierarchy"][o].id}},getGridPower(e){let t=e.getGridId;return t===void 0?"---":e.getValueString(`openWB/counter/${t}/get/power`,"W")},getGridPowerChartData(e){let t=e.getGridId;return t===void 0?[]:e.getChartData(`openWB/counter/${t}/get/power`)},getHomePower(e){return e.getValueString("openWB/counter/set/home_consumption","W")},getHomePowerChartData(e){return e.getChartData("openWB/counter/set/home_consumption")},getBatteryConfigured(e){return e.getValueBool("openWB/bat/config/configured")},getBatteryPower(e){return e.getValueString("openWB/bat/get/power","W")},getBatteryPowerChartData(e){return e.getChartData("openWB/bat/get/power")},getBatterySoc(e){return e.getValueString("openWB/bat/get/soc","%")},getBatterySocChartData(e){return e.getChartData("openWB/bat/get/soc")},getPvConfigured(e){return e.getValueBool("openWB/pv/config/configured")},getPvPower(e){return e.getValueString("openWB/pv/get/power","W",!0)},getPvPowerChartData(e){return e.getChartData("openWB/pv/get/power").map(t=>t*-1)},getChargePointSumPower(e){return e.getValueString("openWB/chargepoint/get/power","W")},getChargePointSumPowerChartData(e){return e.getChartData("openWB/chargepoint/get/power")},getChargePointIds(e){let t=e.getObjectIds("cp"),o=this.getChargePointFilter;return o.length>0?(console.debug("charge points are filtered!",t,o),t.filter(s=>o.includes(s))):t},getChargePointName(e){return t=>e.topics[`openWB/chargepoint/${t}/config`]!==void 0?e.topics[`openWB/chargepoint/${t}/config`].name:"---"},getChargePointPower(e){return t=>e.getValueString(`openWB/chargepoint/${t}/get/power`)},getChargePointPowerChartData(e){return t=>e.getChartData(`openWB/chargepoint/${t}/get/power`)},getChargePointSetCurrent(e){return t=>e.getValueString(`openWB/chargepoint/${t}/set/current`,"A")},getChargePointPhasesInUse(e){return t=>{const o=["/","①","②","③"],s=e.topics[`openWB/chargepoint/${t}/get/phases_in_use`];return s!==void 0&&s>=0&&se.getValueBool(`openWB/chargepoint/${t}/get/plug_state`)},getChargePointChargeState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/charge_state`)},getChargePointManualLock(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/set/manual_lock`)},getChargePointVehicleChangePermitted(e){return t=>Array.isArray(e.topics[`openWB/chargepoint/${t}/set/change_ev_permitted`])?e.topics[`openWB/chargepoint/${t}/set/change_ev_permitted`][0]:!0},getChargePointConnectedVehicleConfig(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/config`]},getChargePointConnectedVehicleChargeMode(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.translateChargeMode(e.getChargePointConnectedVehicleConfig(t).chargemode)}},getChargePointConnectedVehiclePriority(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).priority}},getChargePointConnectedVehicleInfo(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`]},getChargePointConnectedVehicleId(e){return t=>{if(e.getChargePointConnectedVehicleInfo(t))return e.getChargePointConnectedVehicleInfo(t).id}},getChargePointConnectedVehicleChargeTemplateIndex(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).charge_template}},getChargePointConnectedVehicleChargeTemplate(e){return t=>{let o=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.topics[`openWB/vehicle/template/charge_template/${o}`]}},getChargePointConnectedVehicleEvTemplate(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).ev_template}},getChargePointConnectedVehicleName(e){return t=>{if(e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`])return e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`].name}},getChargePointConnectedVehicleSoc(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/soc`]},getChargePointConnectedVehicleTimeChargingActive(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).time_charging.active}},getChargePointConnectedVehicleTimeChargingRunning(e){return t=>{let o=e.getChargePointConnectedVehicleConfig(t).time_charging_in_use;return o!==void 0?o:!1}},getChargePointConnectedVehicleInstantChargingCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.current}},getChargePointConnectedVehicleInstantChargingLimit(e){return t=>e.getChargePointConnectedVehicleChargeTemplate(t)?e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.limit:{selected:void 0}},getChargePointConnectedVehiclePvChargingFeedInLimit(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.feed_in_limit}},getChargePointConnectedVehiclePvChargingMinCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_current}},getChargePointConnectedVehiclePvChargingMinSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc}},getChargePointConnectedVehiclePvChargingMinSocCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc_current}},getChargePointConnectedVehiclePvChargingMaxSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.max_soc}},getChargePointConnectedVehicleScheduledChargingPlans(e){return t=>{let o=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${o}/chargemode/scheduled_charging/plans/+`)}},getChargePointConnectedVehicleTimeChargingPlans(e){return t=>{let o=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${o}/time_charging/plans/+`)}},getVehicleList(e){return e.getWildcardTopics("openWB/vehicle/+/name")},getVehicleName(e){return t=>e.topics[`openWB/vehicle/${t}/name`]},getVehicleSocConfigured(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type!=null},getVehicleSocIsManual(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type=="manual"},getVehicleFaultState(e){return t=>e.topics[`openWB/vehicle/${t}/get/fault_state`]?e.topics[`openWB/vehicle/${t}/get/fault_state`]:0}},actions:{updateSetting(e,t){e in this.settings&&(this.settings[e]=t)},initTopic(e,t=void 0){e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.addTopic(e,t)},addTopic(e,t){console.debug("addTopic",e,t),this.topics[e]=t},removeTopic(e){e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic for removal:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),delete this.topics[t]})):delete this.topics[e]},updateTopic(e,t,o=void 0){const s=(r,n,c)=>n.split(".").reduce((l,m,g)=>l[m]=n.split(".").length===++g?c:l[m]||{},r);e in this.topics?o!=null?s(this.topics[e],o,t):this.topics[e]=t:console.debug("topic not found: ",e)},updateChartData(){for(const[e,t]of Object.entries(this.topics))(e.endsWith("home_consumption")||e.endsWith("power")||e.endsWith("soc"))&&(this.chartData[e]===void 0&&(this.chartData[e]=[]),t!=null&&(this.chartData[e].push(t),this.chartData[e].slice(-128)))},updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.updateTopic(e,t,o)},chargeModeList(){var e=[{id:"instant_charging"},{id:"pv_charging"},{id:"scheduled_charging"},{id:"standby"},{id:"stop"}];return e.forEach(t=>{t.label=this.translateChargeMode(t.id).label,t.class=this.translateChargeMode(t.id).class}),e},translateChargeMode(e){switch(e){case"instant_charging":return{mode:e,label:"Sofort",class:"danger"};case"pv_charging":return{mode:e,label:"PV",class:"success"};case"scheduled_charging":return{mode:e,label:"Zielladen",class:"primary"};case"time_charging":return{mode:e,label:"Zeitladen",class:"warning"};case"standby":return{mode:e,label:"Standby",class:"secondary"};case"stop":return{mode:e,label:"Stop",class:"dark"};default:return console.warn("unknown charge mode:",e),{mode:e,label:e,class:e}}},checkChangesLockCode(e){return!!(this.getThemeConfiguration&&this.getThemeConfiguration.lock_changes_code==e)},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatDateRange(e,t="-"){const o={year:"numeric",month:"2-digit",day:"2-digit"};let s={day:"2-digit"};const r=new Date(e[0]),n=new Date(e[1]);return r.getFullYear()==n.getFullYear()?r.getMonth()!=n.getMonth()&&(s.month=o.month):s=o,`${this.formatDate(e[0],s)}${t}${this.formatDate(e[1],o)}`},formatWeeklyScheduleDays(e){const t=["Mo","Di","Mi","Do","Fr","Sa","So"];let o=[];return e.forEach(function(s,r){s==!0&&o.push(t[r])}),o.join(",")}}});const ne={name:"NavItem",props:{to:{type:Object,required:!0}}};function oe(e,t,o,s,r,n){const c=d("i-nav-item");return f(),C(c,{to:o.to,"active-class":"-active",class:"_border _border-color:primary _text-align:center"},{default:i(()=>[I(e.$slots,"default",{},void 0,!0)]),_:3},8,["to"])}const re=b(ne,[["render",oe],["__scopeId","data-v-079bc5e0"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/NavItem.vue"]]),ie={name:"NavBar",components:{NavItem:re},data(){return{mqttStore:B()}}};function ae(e,t,o,s,r,n){const c=d("nav-item"),l=d("i-nav");return f(),C(l,{vertical:"",class:"_align-items:stretch"},{default:i(()=>[r.mqttStore.getDashBoardEnabled?(f(),C(c,{key:0,to:{name:"dash-board"}},{default:i(()=>[u(" Übersicht ")]),_:1})):v("v-if",!0),r.mqttStore.getChargePointsEnabled&&r.mqttStore.getChargePointIds.length>0?(f(),C(c,{key:1,to:{name:"charge-points"}},{default:i(()=>[u(" Ladepunkte ")]),_:1})):v("v-if",!0),v(` Status - `)]),_:1})}const ce=b(ie,[["render",ae],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/NavBar.vue"]]);G.add(H,J,K,Z);const se={name:"LockNavItem",props:{},data(){return{mqttStore:B(),modalPinEntryVisible:!1,code:""}},components:{FontAwesomeIcon:Y},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},modalPinEntryColor(){return"warning"}},methods:{toggleChangesLock(){console.log("toggleChangesLock"),this.changesLocked?this.unlockChanges():this.changesLocked=!0},unlockChanges(){this.clearCode(),this.modalPinEntryVisible=!0},abortUnlockChanges(){this.modalPinEntryVisible=!1},checkUnlockCode(){this.mqttStore.checkChangesLockCode(this.code)?(this.changesLocked=!1,this.modalPinEntryVisible=!1):console.log("check unlock code failed!")},addCodeDigit(e){this.code.length<8&&(this.code+=e)},removeCodeDigit(){this.code=this.code.slice(0,-1)},clearCode(){this.code=""}},mounted(){this.changesLocked=!0}};function le(e,t,o,s,r,n){const c=d("FontAwesomeIcon"),l=d("i-button"),m=d("i-input"),g=d("i-column"),p=d("i-row"),_=d("i-container"),P=d("i-modal");return f(),T(S,null,[r.mqttStore.getLockChanges?(f(),C(l,{key:0,onClick:t[0]||(t[0]=h=>n.toggleChangesLock()),class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:this.changesLocked?"danger":"success"},{default:i(()=>[a(c,{"fixed-width":"",icon:this.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:x(this.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"])]),_:1},8,["color"])):v("v-if",!0),v(" modals "),(f(),C(E,{to:"body"},[a(P,{modelValue:r.modalPinEntryVisible,"onUpdate:modelValue":t[12]||(t[12]=h=>r.modalPinEntryVisible=h),color:n.modalPinEntryColor},{header:i(()=>[u(" Bitte den PIN zu Freigabe von Änderungen eingeben. ")]),footer:i(()=>[a(_,null,{default:i(()=>[a(p,null,{default:i(()=>[v(" charge point data on left side "),a(g,null,{default:i(()=>[a(l,{color:"danger",onClick:n.abortUnlockChanges},{default:i(()=>[u(" Zurück ")]),_:1},8,["onClick"])]),_:1}),a(g,{class:"_text-align:right"},{default:i(()=>[a(l,{color:"success",onClick:n.checkUnlockCode},{default:i(()=>[u(" OK ")]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1})]),default:i(()=>[a(_,null,{default:i(()=>[a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,null,{default:i(()=>[a(m,{modelValue:r.code,"onUpdate:modelValue":t[1]||(t[1]=h=>r.code=h),placeholder:"****",readonly:"",size:"lg",type:"password",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[2]||(t[2]=h=>n.addCodeDigit("1"))},{default:i(()=>[u("1")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[3]||(t[3]=h=>n.addCodeDigit("2"))},{default:i(()=>[u("2")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[4]||(t[4]=h=>n.addCodeDigit("3"))},{default:i(()=>[u("3")]),_:1})]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[5]||(t[5]=h=>n.addCodeDigit("4"))},{default:i(()=>[u("4")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[6]||(t[6]=h=>n.addCodeDigit("5"))},{default:i(()=>[u("5")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[7]||(t[7]=h=>n.addCodeDigit("6"))},{default:i(()=>[u("6")]),_:1})]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[8]||(t[8]=h=>n.addCodeDigit("7"))},{default:i(()=>[u("7")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[9]||(t[9]=h=>n.addCodeDigit("8"))},{default:i(()=>[u("8")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[10]||(t[10]=h=>n.addCodeDigit("9"))},{default:i(()=>[u("9")]),_:1})]),_:1})]),_:1}),a(p,{center:""},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:n.clearCode},{default:i(()=>[a(c,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1},8,["onClick"])]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[11]||(t[11]=h=>n.addCodeDigit("0"))},{default:i(()=>[u("0")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:n.removeCodeDigit},{default:i(()=>[a(c,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","color"])]))],64)}const ge=b(se,[["render",le],["__scopeId","data-v-24a0d24c"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue"]]);const de={name:"openwbDisplayCardsApp",components:{RouterView:q,DateTime:te,NavBar:ce,LockNavItem:ge},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},mqttTopicsToSubscribe:["openWB/optional/int_display/theme","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/counter/+/get/power","openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/get/power","openWB/pv/config/configured","openWB/pv/get/power","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/change_ev_permitted","openWB/chargepoint/+/config","openWB/chargepoint/+/get/connected_vehicle/+","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/get/fault_state","openWB/vehicle/template/charge_template/#"],mqttStore:B(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},methods:{createConnection(){const{protocol:e,host:t,port:o,endpoint:s,...r}=this.connection,n=`${e}://${t}:${o}${s}`;console.debug("connecting to broker:",n);try{this.client=N.connect(n,r)}catch(c){console.error("mqtt.connect error",c)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",c=>{console.error("Connection failed",c)}),this.client.on("message",(c,l)=>{if(console.debug(`Received message "${l}" from topic "${c}"`),l.toString().length>0){let m;try{m=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",c),m=l.toString()}this.mqttStore.addTopic(c,m)}else this.mqttStore.removeTopic(c)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,s=2){console.debug("doPublish",e,t);let r={qos:s,retain:o};this.client.publish(e,JSON.stringify(t),r,n=>{n&&console.error("Publish error",n)})},sendTopicToBroker(e,t=void 0){let o=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(o,t)}},created(){this.createConnection()},mounted(){let e=window.location.search;e!=""&&(console.debug("search",e),new URLSearchParams(e).forEach((o,s)=>{this.mqttStore.updateSetting(s,parseInt(o))})),this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)}};function ue(e,t,o,s,r,n){const c=d("DateTime"),l=d("i-column"),m=d("i-row"),g=d("i-container"),p=d("LockNavItem"),_=d("NavBar"),P=d("i-layout-aside"),h=d("RouterView"),D=d("i-layout-content"),$=d("i-layout");return f(),C($,{vertical:""},{default:i(()=>[a(P,{class:"_position:fixed"},{default:i(()=>[a(g,{fluid:"",class:"_margin-bottom:1"},{default:i(()=>[a(m,{center:""},{default:i(()=>[a(l,null,{default:i(()=>[a(c)]),_:1})]),_:1})]),_:1}),a(p),a(_,{changesLocked:n.changesLocked},null,8,["changesLocked"])]),_:1}),a(D,null,{default:i(()=>[a(h,{changesLocked:n.changesLocked},null,8,["changesLocked"])]),_:1})]),_:1})}const he=b(de,[["render",ue],["__scopeId","data-v-7a7a37b1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/App.vue"]]),pe="modulepreload",me=function(e){return"/openWB/web/display/themes/cards/"+e},k={},y=function(t,o,s){if(!o||o.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(o.map(n=>{if(n=me(n),n in k)return;k[n]=!0;const c=n.endsWith(".css"),l=c?'[rel="stylesheet"]':"";if(!!s)for(let p=r.length-1;p>=0;p--){const _=r[p];if(_.href===n&&(!c||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${l}`))return;const g=document.createElement("link");if(g.rel=c?"stylesheet":pe,c||(g.as="script",g.crossOrigin=""),g.href=n,document.head.appendChild(g),c)return new Promise((p,_)=>{g.addEventListener("load",p),g.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${n}`)))})})).then(()=>t())},fe="/openWB/web/display/themes/cards/openWB_logo_dark.png";const _e={name:"WelcomeView",data(){return{mqttStore:B()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}},mounted(){setTimeout(this.selectFirstRoute,3e3)}},Ce=e=>(O("data-v-0939a750"),e=e(),F(),e),ve=Ce(()=>V("img",{class:"logo",src:fe},null,-1));function be(e,t,o,s,r,n){const c=d("i-card"),l=d("i-column"),m=d("i-row"),g=d("i-container");return f(),C(g,null,{default:i(()=>[a(m,{center:"",middle:""},{default:i(()=>[a(l,null,{default:i(()=>[a(c,{color:"primary"},{header:i(()=>[u(" Cards Theme ")]),default:i(()=>[ve]),_:1})]),_:1})]),_:1})]),_:1})}const Be=b(_e,[["render",be],["__scopeId","data-v-0939a750"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/WelcomeView.vue"]]),we=M({history:R("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Be},{path:"/DashBoard",name:"dash-board",component:()=>y(()=>import("./DashBoardView-ec89d659.js"),["assets/DashBoardView-ec89d659.js","assets/ChargePointPlugBadge-b24b7772.js","assets/vendor-e07709f3.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js","assets/ChargePointPlugBadge-bfdc8b49.css","assets/DashBoardView-a306eb3f.css"])},{path:"/ChargePoints",name:"charge-points",component:()=>y(()=>import("./ChargePointsView-ad6342d8.js"),["assets/ChargePointsView-ad6342d8.js","assets/ChargePointPlugBadge-b24b7772.js","assets/vendor-e07709f3.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js","assets/ChargePointPlugBadge-bfdc8b49.css","assets/ChargePointsView-39525d2d.css"])},{path:"/Status",name:"status",component:()=>y(()=>import("./StatusView-27618a07.js"),["assets/StatusView-27618a07.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-e07709f3.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js"])}]});const w=A(he);w.use(z());w.use(we);w.use(U,{colorMode:"dark",components:j});w.mount("#app");export{B as u}; + `)]),_:1})}const ce=b(ie,[["render",ae],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/NavBar.vue"]]);G.add(H,J,K,Z);const se={name:"LockNavItem",props:{},data(){return{mqttStore:B(),modalPinEntryVisible:!1,code:""}},components:{FontAwesomeIcon:Y},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},modalPinEntryColor(){return"warning"}},methods:{toggleChangesLock(){console.log("toggleChangesLock"),this.changesLocked?this.unlockChanges():this.changesLocked=!0},unlockChanges(){this.clearCode(),this.modalPinEntryVisible=!0},abortUnlockChanges(){this.modalPinEntryVisible=!1},checkUnlockCode(){this.mqttStore.checkChangesLockCode(this.code)?(this.changesLocked=!1,this.modalPinEntryVisible=!1):console.log("check unlock code failed!")},addCodeDigit(e){this.code.length<8&&(this.code+=e)},removeCodeDigit(){this.code=this.code.slice(0,-1)},clearCode(){this.code=""}},mounted(){this.changesLocked=!0}};function le(e,t,o,s,r,n){const c=d("FontAwesomeIcon"),l=d("i-button"),m=d("i-input"),g=d("i-column"),p=d("i-row"),_=d("i-container"),P=d("i-modal");return f(),T(S,null,[r.mqttStore.getLockChanges?(f(),C(l,{key:0,onClick:t[0]||(t[0]=h=>n.toggleChangesLock()),class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:this.changesLocked?"danger":"success"},{default:i(()=>[a(c,{"fixed-width":"",icon:this.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:x(this.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"])]),_:1},8,["color"])):v("v-if",!0),v(" modals "),(f(),C(E,{to:"body"},[a(P,{modelValue:r.modalPinEntryVisible,"onUpdate:modelValue":t[12]||(t[12]=h=>r.modalPinEntryVisible=h),color:n.modalPinEntryColor},{header:i(()=>[u(" Bitte den PIN zu Freigabe von Änderungen eingeben. ")]),footer:i(()=>[a(_,null,{default:i(()=>[a(p,null,{default:i(()=>[v(" charge point data on left side "),a(g,null,{default:i(()=>[a(l,{color:"danger",onClick:n.abortUnlockChanges},{default:i(()=>[u(" Zurück ")]),_:1},8,["onClick"])]),_:1}),a(g,{class:"_text-align:right"},{default:i(()=>[a(l,{color:"success",onClick:n.checkUnlockCode},{default:i(()=>[u(" OK ")]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1})]),default:i(()=>[a(_,null,{default:i(()=>[a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,null,{default:i(()=>[a(m,{modelValue:r.code,"onUpdate:modelValue":t[1]||(t[1]=h=>r.code=h),placeholder:"****",readonly:"",size:"lg",type:"password",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[2]||(t[2]=h=>n.addCodeDigit("1"))},{default:i(()=>[u("1")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[3]||(t[3]=h=>n.addCodeDigit("2"))},{default:i(()=>[u("2")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[4]||(t[4]=h=>n.addCodeDigit("3"))},{default:i(()=>[u("3")]),_:1})]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[5]||(t[5]=h=>n.addCodeDigit("4"))},{default:i(()=>[u("4")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[6]||(t[6]=h=>n.addCodeDigit("5"))},{default:i(()=>[u("5")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[7]||(t[7]=h=>n.addCodeDigit("6"))},{default:i(()=>[u("6")]),_:1})]),_:1})]),_:1}),a(p,{center:"",class:"_padding-bottom:1"},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[8]||(t[8]=h=>n.addCodeDigit("7"))},{default:i(()=>[u("7")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[9]||(t[9]=h=>n.addCodeDigit("8"))},{default:i(()=>[u("8")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[10]||(t[10]=h=>n.addCodeDigit("9"))},{default:i(()=>[u("9")]),_:1})]),_:1})]),_:1}),a(p,{center:""},{default:i(()=>[a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:n.clearCode},{default:i(()=>[a(c,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1},8,["onClick"])]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:t[11]||(t[11]=h=>n.addCodeDigit("0"))},{default:i(()=>[u("0")]),_:1})]),_:1}),a(g,{class:"_flex-grow:0"},{default:i(()=>[a(l,{size:"lg",class:"pinButton",onClick:n.removeCodeDigit},{default:i(()=>[a(c,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","color"])]))],64)}const ge=b(se,[["render",le],["__scopeId","data-v-24a0d24c"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue"]]);const de={name:"openwbDisplayCardsApp",components:{RouterView:q,DateTime:te,NavBar:ce,LockNavItem:ge},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},mqttTopicsToSubscribe:["openWB/optional/int_display/theme","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/counter/+/get/power","openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/get/power","openWB/pv/config/configured","openWB/pv/get/power","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/change_ev_permitted","openWB/chargepoint/+/config","openWB/chargepoint/+/get/connected_vehicle/+","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/get/fault_state","openWB/vehicle/template/charge_template/#"],mqttStore:B(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},methods:{createConnection(){const{protocol:e,host:t,port:o,endpoint:s,...r}=this.connection,n=`${e}://${t}:${o}${s}`;console.debug("connecting to broker:",n);try{this.client=N.connect(n,r)}catch(c){console.error("mqtt.connect error",c)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",c=>{console.error("Connection failed",c)}),this.client.on("message",(c,l)=>{if(console.debug(`Received message "${l}" from topic "${c}"`),l.toString().length>0){let m;try{m=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",c),m=l.toString()}this.mqttStore.addTopic(c,m)}else this.mqttStore.removeTopic(c)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,s=2){console.debug("doPublish",e,t);let r={qos:s,retain:o};this.client.publish(e,JSON.stringify(t),r,n=>{n&&console.error("Publish error",n)})},sendTopicToBroker(e,t=void 0){let o=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(o,t)}},created(){this.createConnection()},mounted(){let e=window.location.search;e!=""&&(console.debug("search",e),new URLSearchParams(e).forEach((o,s)=>{this.mqttStore.updateSetting(s,parseInt(o))})),this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)}};function ue(e,t,o,s,r,n){const c=d("DateTime"),l=d("i-column"),m=d("i-row"),g=d("i-container"),p=d("LockNavItem"),_=d("NavBar"),P=d("i-layout-aside"),h=d("RouterView"),D=d("i-layout-content"),$=d("i-layout");return f(),C($,{vertical:""},{default:i(()=>[a(P,{class:"_position:fixed"},{default:i(()=>[a(g,{fluid:"",class:"_margin-bottom:1"},{default:i(()=>[a(m,{center:""},{default:i(()=>[a(l,null,{default:i(()=>[a(c)]),_:1})]),_:1})]),_:1}),a(p),a(_,{changesLocked:n.changesLocked},null,8,["changesLocked"])]),_:1}),a(D,null,{default:i(()=>[a(h,{changesLocked:n.changesLocked},null,8,["changesLocked"])]),_:1})]),_:1})}const he=b(de,[["render",ue],["__scopeId","data-v-7a7a37b1"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/App.vue"]]),pe="modulepreload",me=function(e){return"/openWB/web/display/themes/cards/"+e},k={},y=function(t,o,s){if(!o||o.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(o.map(n=>{if(n=me(n),n in k)return;k[n]=!0;const c=n.endsWith(".css"),l=c?'[rel="stylesheet"]':"";if(!!s)for(let p=r.length-1;p>=0;p--){const _=r[p];if(_.href===n&&(!c||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${l}`))return;const g=document.createElement("link");if(g.rel=c?"stylesheet":pe,c||(g.as="script",g.crossOrigin=""),g.href=n,document.head.appendChild(g),c)return new Promise((p,_)=>{g.addEventListener("load",p),g.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${n}`)))})})).then(()=>t())},fe="/openWB/web/display/themes/cards/openWB_logo_dark.png";const _e={name:"WelcomeView",data(){return{mqttStore:B()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}},mounted(){setTimeout(this.selectFirstRoute,3e3)}},Ce=e=>(O("data-v-0939a750"),e=e(),F(),e),ve=Ce(()=>V("img",{class:"logo",src:fe},null,-1));function be(e,t,o,s,r,n){const c=d("i-card"),l=d("i-column"),m=d("i-row"),g=d("i-container");return f(),C(g,null,{default:i(()=>[a(m,{center:"",middle:""},{default:i(()=>[a(l,null,{default:i(()=>[a(c,{color:"primary"},{header:i(()=>[u(" Cards Theme ")]),default:i(()=>[ve]),_:1})]),_:1})]),_:1})]),_:1})}const Be=b(_e,[["render",be],["__scopeId","data-v-0939a750"],["__file","/var/www/html/openWB/packages/modules/display_themes/cards/source/src/views/WelcomeView.vue"]]),we=M({history:R("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Be},{path:"/DashBoard",name:"dash-board",component:()=>y(()=>import("./DashBoardView-4f849640.js"),["assets/DashBoardView-4f849640.js","assets/ChargePointPlugBadge-918c9082.js","assets/vendor-e07709f3.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js","assets/ChargePointPlugBadge-bfdc8b49.css","assets/DashBoardView-a306eb3f.css"])},{path:"/ChargePoints",name:"charge-points",component:()=>y(()=>import("./ChargePointsView-49c07fcc.js"),["assets/ChargePointsView-49c07fcc.js","assets/ChargePointPlugBadge-918c9082.js","assets/vendor-e07709f3.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js","assets/ChargePointPlugBadge-bfdc8b49.css","assets/ChargePointsView-39525d2d.css"])},{path:"/Status",name:"status",component:()=>y(()=>import("./StatusView-6530618e.js"),["assets/StatusView-6530618e.js","assets/vendor-inkline-4a446dd5.js","assets/vendor-e07709f3.js","assets/vendor-inkline-2831be27.css","assets/vendor-fortawesome-cc5e1458.js"])}]});const w=A(he);w.use(z());w.use(we);w.use(U,{colorMode:"dark",components:j});w.mount("#app");export{B as u}; diff --git a/packages/modules/display_themes/cards/web/index.html b/packages/modules/display_themes/cards/web/index.html index b5efef1b0b..6499fa1fe8 100644 --- a/packages/modules/display_themes/cards/web/index.html +++ b/packages/modules/display_themes/cards/web/index.html @@ -6,7 +6,7 @@ openWB Display - Cards - + From b48c474bc0f38e0980ae5a1e5d880483e43070d1 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 18 Aug 2023 08:14:12 +0200 Subject: [PATCH 065/121] only local cp in minimal display theme --- web/display/minimal/index.php | 9 ++++++++- web/display/minimal/setupMqttServices.js | 17 +++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/web/display/minimal/index.php b/web/display/minimal/index.php index fbd54a75fa..5cce40a730 100644 --- a/web/display/minimal/index.php +++ b/web/display/minimal/index.php @@ -45,6 +45,13 @@ list($key, $value) = explode("=", $line, 2); ${$key."old"} = trim( $value, " '\t\n\r\0\x0B" ); // remove all garbage and single quotes } + if ($lastmanagementold == "1") { + // filter local connections + $valid_evsecon = ["modbusevse", "daemon", "ipevse", "dac"]; + if (!in_array($evsecons1old, $valid_evsecon)) { + $lastmanagementold = "0"; + } + } ?> @@ -190,7 +197,7 @@ function checkTime(i) { // functions for processing messages 'display/minimal/processAllMqttMsg.js?ver=20230204', // functions performing mqtt and start mqtt-service - 'display/minimal/setupMqttServices.js?ver=20221229', + 'display/minimal/setupMqttServices.js?ver=20230818', ]; scriptsToLoad.forEach(function(src) { diff --git a/web/display/minimal/setupMqttServices.js b/web/display/minimal/setupMqttServices.js index e4d674f87a..395e9b247f 100644 --- a/web/display/minimal/setupMqttServices.js +++ b/web/display/minimal/setupMqttServices.js @@ -17,14 +17,19 @@ var topicsToSubscribe = [ ["openWB/lp/1/boolPlugStat", 1], ["openWB/lp/1/boolChargeStat", 1], ["openWB/lp/1/ChargePointEnabled", 1], - ["openWB/lp/2/W", 1], - ["openWB/lp/2/%Soc", 1], - ["openWB/lp/2/boolSocConfigured"], - ["openWB/lp/2/boolPlugStat", 1], - ["openWB/lp/2/ChargePointEnabled", 1], - ["openWB/lp/2/boolChargeStat", 1], ]; +if (lastmanagementold == 1) { + topicsToSubscribe.push( + ["openWB/lp/2/W", 1], + ["openWB/lp/2/%Soc", 1], + ["openWB/lp/2/boolSocConfigured"], + ["openWB/lp/2/boolPlugStat", 1], + ["openWB/lp/2/ChargePointEnabled", 1], + ["openWB/lp/2/boolChargeStat", 1], + ); +} + // holds number of topics flagged 1 initially var countTopicsNotForPreloader = topicsToSubscribe.filter(row => row[1] === 1).length; From 960b4772a517d76bc3bcad174e01c9c589e51ac4 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 18 Aug 2023 08:52:23 +0200 Subject: [PATCH 066/121] toggle display of total inverter yields --- web/status/processAllMqttMsg.js | 170 ++++++++++++++++---------------- web/status/status.php | 6 +- 2 files changed, 90 insertions(+), 86 deletions(-) diff --git a/web/status/processAllMqttMsg.js b/web/status/processAllMqttMsg.js index 24db13ad91..43d434687a 100644 --- a/web/status/processAllMqttMsg.js +++ b/web/status/processAllMqttMsg.js @@ -25,7 +25,7 @@ function getIndex(topic) { // since this is supposed to be the index like in openwb/lp/4/w // no lookbehind supported by safari, so workaround with replace needed var index = topic.match(/(?:\/)([0-9]+)(?=\/)/g)[0].replace(/[^0-9]+/g, ''); - if ( typeof index === 'undefined' ) { + if (typeof index === 'undefined') { index = ''; } return index; @@ -34,35 +34,35 @@ function getIndex(topic) { function handlevar(mqttmsg, mqttpayload) { // receives all messages and calls respective function to process them processPreloader(mqttmsg); - if ( mqttmsg.match( /^openwb\/lp\//i) ) { + if (mqttmsg.match(/^openwb\/lp\//i)) { processLpMsg(mqttmsg, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/evu\//i) ) { + else if (mqttmsg.match(/^openwb\/evu\//i)) { processEvuMsg(mqttmsg, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/pv\//i) ) { + else if (mqttmsg.match(/^openwb\/pv\//i)) { processPvMsg(mqttmsg, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/Verbraucher\//i) ) { + else if (mqttmsg.match(/^openwb\/Verbraucher\//i)) { processVerbraucherMsg(mqttmsg, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/housebattery\//i) ) { + else if (mqttmsg.match(/^openwb\/housebattery\//i)) { processBatMsg(mqttmsg, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/SmartHome\//i) ) { + else if (mqttmsg.match(/^openwb\/SmartHome\//i)) { processSmartHomeMsg(mqttmsg, mqttpayload); } - - else if ( mqttmsg.match( /^openwb\/global\//i) ) { + + else if (mqttmsg.match(/^openwb\/global\//i)) { processGlobalMsg(mqttmsg, mqttpayload); } else { - console.log("Unknown topic: "+mqttmsg+": "+mqttpayload); + console.log("Unknown topic: " + mqttmsg + ": " + mqttpayload); } } // end handlevar -function processGlobalMsg (mqttmsg, mqttpayload) { - switch(mqttmsg){ +function processGlobalMsg(mqttmsg, mqttpayload) { + switch (mqttmsg) { case "openWB/global/WAllChargePoints": directShow(mqttpayload, '#ladeleistungAll'); break; @@ -74,8 +74,8 @@ function processGlobalMsg (mqttmsg, mqttpayload) { } } -function processEvuMsg (mqttmsg, mqttpayload) { - switch(mqttmsg){ +function processEvuMsg(mqttmsg, mqttpayload) { + switch (mqttmsg) { case "openWB/evu/ASchieflast": directShow(mqttpayload, '#schieflastdiv'); break; @@ -136,16 +136,13 @@ function processEvuMsg (mqttmsg, mqttpayload) { } } -function processPvMsg (mqttmsg, mqttpayload) { - if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/.*$/i) ) - { +function processPvMsg(mqttmsg, mqttpayload) { + if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/.*$/i)) { var index = getIndex(mqttmsg); // extract number between two / / - if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/W$/i) ) - { + if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/W$/i)) { absShow(mqttpayload, '#inverter' + index + ' .powerInverter'); } - else if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/WhCounter$/i) ) - { + else if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/WhCounter$/i)) { kShow(mqttpayload, '#inverter' + index + ' .yieldInverter'); } // no data in openWB 1.x @@ -161,21 +158,18 @@ function processPvMsg (mqttmsg, mqttpayload) { // { // fractionDigitsShow(mqttpayload, '#inverter' + index + ' .yYieldInverter'); // } - else if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/faultState$/i) ) - { + else if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/faultState$/i)) { setWarningLevel(mqttpayload, '#inverter' + index + ' .faultStrPvRow'); } - else if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/faultStr$/i) ) - { + else if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/faultStr$/i)) { textShow(formatJsonString(mqttpayload), '#inverter' + index + ' .faultStrPv'); } - else if ( mqttmsg.match(/^openWB\/pv\/[0-9]+\/boolPVConfigured$/i) ) - { + else if (mqttmsg.match(/^openWB\/pv\/[0-9]+\/boolPVConfigured$/i)) { visibilityCard('#inverter' + index, mqttpayload); } } else { - switch(mqttmsg){ + switch (mqttmsg) { case "openWB/pv/CounterTillStartPvCharging": directShow(mqttpayload, '#pvcounterdiv'); break; @@ -190,16 +184,26 @@ function processPvMsg (mqttmsg, mqttpayload) { break; case "openWB/pv/MonthlyYieldKwh": fractionDigitsShow(mqttpayload, '#monthly_pvkwhdiv'); + if (mqttpayload != "0") { + showSection("#monatsertragRow"); + } else { + hideSection("#monatsertragRow"); + } break; case "openWB/pv/YearlyYieldKwh": fractionDigitsShow(mqttpayload, '#yearly_pvkwhdiv'); + if (mqttpayload != "0") { + showSection("#jahresertragRow"); + } else { + hideSection("#jahresertragRow"); + } break; } } } -function processBatMsg (mqttmsg, mqttpayload) { - switch(mqttmsg){ +function processBatMsg(mqttmsg, mqttpayload) { + switch (mqttmsg) { case "openWB/housebattery/boolHouseBatteryConfigured": visibilityCard('#speicher', mqttpayload); break; @@ -227,8 +231,8 @@ function processBatMsg (mqttmsg, mqttpayload) { } } -function processSmartHomeMsg (mqttmsg, mqttpayload) { - switch(mqttmsg){ +function processSmartHomeMsg(mqttmsg, mqttpayload) { + switch (mqttmsg) { case "openWB/SmartHome/Status/maxspeicherladung": directShow(mqttpayload, '#wmaxspeicherladung'); break; @@ -247,74 +251,74 @@ function processSmartHomeMsg (mqttmsg, mqttpayload) { } } -function processVerbraucherMsg (mqttmsg, mqttpayload) { +function processVerbraucherMsg(mqttmsg, mqttpayload) { var index = getIndex(mqttmsg); // extract number between two / / - if ( mqttmsg.match( /^openwb\/Verbraucher\/[1-2]\/Configured$/i ) ) { - visibilityCard('#loads'+index, mqttpayload); + if (mqttmsg.match(/^openwb\/Verbraucher\/[1-2]\/Configured$/i)) { + visibilityCard('#loads' + index, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/Verbraucher\/[1-2]\/Watt$/i ) ) { - directShow(mqttpayload, '#loads'+index+' .verbraucherWatt'); + else if (mqttmsg.match(/^openwb\/Verbraucher\/[1-2]\/Watt$/i)) { + directShow(mqttpayload, '#loads' + index + ' .verbraucherWatt'); } - else if ( mqttmsg.match( /^openwb\/Verbraucher\/[1-2]\/WhImported$/i ) ) { - kShow(mqttpayload, '#loads'+index+' .importVerbraucher'); + else if (mqttmsg.match(/^openwb\/Verbraucher\/[1-2]\/WhImported$/i)) { + kShow(mqttpayload, '#loads' + index + ' .importVerbraucher'); } - else if ( mqttmsg.match( /^openwb\/Verbraucher\/[1-2]\/WhExported$/i ) ) { - kShow(mqttpayload, '#loads'+index+' .exportVerbraucher'); + else if (mqttmsg.match(/^openwb\/Verbraucher\/[1-2]\/WhExported$/i)) { + kShow(mqttpayload, '#loads' + index + ' .exportVerbraucher'); } } -function processLpMsg (mqttmsg, mqttpayload) { +function processLpMsg(mqttmsg, mqttpayload) { var index = getIndex(mqttmsg); // extract number between two / / - if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/boolChargePointConfigured$/i ) ) { + if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/boolChargePointConfigured$/i)) { visibilityCard('#lp' + index, mqttpayload); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/APhase1$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/APhase1$/i)) { directShow(mqttpayload, '#lp' + index + ' .stromstaerkeP1'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/APhase2$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/APhase2$/i)) { directShow(mqttpayload, '#lp' + index + ' .stromstaerkeP2'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/APhase3$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/APhase3$/i)) { directShow(mqttpayload, '#lp' + index + ' .stromstaerkeP3'); - } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/AConfigured$/i ) ) { + } + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/AConfigured$/i)) { directShow(mqttpayload, '#lp' + index + ' .stromvorgabe'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/kWhCounter$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/kWhCounter$/i)) { fractionDigitsShow(mqttpayload, '#lp' + index + ' .kWhCounter'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/VPhase1$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/VPhase1$/i)) { directShow(mqttpayload, '#lp' + index + ' .spannungP1'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/VPhase2$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/VPhase2$/i)) { directShow(mqttpayload, '#lp' + index + ' .spannungP2'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/VPhase3$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/VPhase3$/i)) { directShow(mqttpayload, '#lp' + index + ' .spannungP3'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/W$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/W$/i)) { directShow(mqttpayload, '#lp' + index + ' .ladeleistung'); } - else if ( mqttmsg.match( /^openWB\/lp\/[1-9][0-9]*\/boolSocConfigured$/i )) { - if( mqttpayload == "1" ){ + else if (mqttmsg.match(/^openWB\/lp\/[1-9][0-9]*\/boolSocConfigured$/i)) { + if (mqttpayload == "1") { showSection('#lp' + index + ' .socRow'); } else { hideSection('#lp' + index + ' .socRow'); } } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/%Soc$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/%Soc$/i)) { directShow(mqttpayload, '#lp' + index + ' .soc'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/faultState$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/faultState$/i)) { setWarningLevel(mqttpayload, '#lp' + index + ' .faultStrLpRow'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/faultStr$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/faultStr$/i)) { textShow(formatJsonString(mqttpayload), '#lp' + index + ' .faultStrLp'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/socFaultState$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/socFaultState$/i)) { setWarningLevel(mqttpayload, '#lp' + index + ' .faultStrSocLpRow'); } - else if ( mqttmsg.match( /^openwb\/lp\/[1-9][0-9]*\/socFaultStr$/i ) ) { + else if (mqttmsg.match(/^openwb\/lp\/[1-9][0-9]*\/socFaultStr$/i)) { textShow(formatJsonString(mqttpayload), '#lp' + index + ' .faultStrSocLp'); } else { @@ -339,18 +343,18 @@ function processLpMsg (mqttmsg, mqttpayload) { // don't parse value function directShow(mqttpayload, variable) { - var value = parseFloat(mqttpayload); - if ( isNaN(value) ) { - value = 0; - } - var valueStr = value.toLocaleString(undefined) ; - $(variable).text(valueStr); + var value = parseFloat(mqttpayload); + if (isNaN(value)) { + value = 0; + } + var valueStr = value.toLocaleString(undefined); + $(variable).text(valueStr); } // show missing value or zero value as -- function noZeroShow(mqttpayload, variable) { var value = parseFloat(mqttpayload); - if ( isNaN(value) || (value == 0) ) { + if (isNaN(value) || (value == 0)) { valueStr = "--"; } else { @@ -364,7 +368,7 @@ function impExpShow(mqttpayload, variable) { // zur Anzeige Wert um "Bezug"/"Einspeisung" ergänzen var value = parseInt(mqttpayload); var valueStr = Math.abs(value).toLocaleString(undefined); - if(value < 0) { + if (value < 0) { valueStr += " (Exp.)"; } else if (value > 0) { valueStr += " (Imp.)"; @@ -376,24 +380,24 @@ function impExpShow(mqttpayload, variable) { function kShow(mqttpayload, variable) { var value = parseFloat(mqttpayload); value = (value / 1000); - var valueStr = value.toLocaleString(undefined, {minimumFractionDigits: 3, maximumFractionDigits: 3}) ; + var valueStr = value.toLocaleString(undefined, { minimumFractionDigits: 3, maximumFractionDigits: 3 }); $(variable).text(valueStr); } // show absolute value (always >0) function absShow(mqttpayload, variable) { var value = Math.abs(parseInt(mqttpayload)); - var valueStr = value.toLocaleString(undefined) ; + var valueStr = value.toLocaleString(undefined); $(variable).text(valueStr); } //show kilo-payloads with 3 fraction digits function fractionDigitsShow(mqttpayload, variable) { var value = parseFloat(mqttpayload); - if ( isNaN(value) ) { + if (isNaN(value)) { value = 0; } - var valueStr = value.toLocaleString(undefined, {minimumFractionDigits: 3, maximumFractionDigits: 3}); + var valueStr = value.toLocaleString(undefined, { minimumFractionDigits: 3, maximumFractionDigits: 3 }); $(variable).text(valueStr); } @@ -423,7 +427,7 @@ function setWarningLevel(mqttpayload, variable) { //Der String ist mit einem Tausender-Punkt versehen. Daher den Payload für die if-Abfrage verwenden. function visibilityMin(row, mqttpayload) { var value = parseFloat(mqttpayload) * -1; - if (value>100) { + if (value > 100) { showSection(row); } else { @@ -432,15 +436,15 @@ function visibilityMin(row, mqttpayload) { } //show/hide row with only one value -function visibilityValue(row, variable){ +function visibilityValue(row, variable) { var value = parseFloat($(variable).text()); // zu Berücksichtigung von 0,00 - if (( value != 0) && ( $(variable).text() != "")) { + if ((value != 0) && ($(variable).text() != "")) { showSection(row); } else { hideSection(row); } - var valueStr = value.toLocaleString(undefined, {minimumFractionDigits: 3, maximumFractionDigits: 3}); + var valueStr = value.toLocaleString(undefined, { minimumFractionDigits: 3, maximumFractionDigits: 3 }); $(variable).text(valueStr); } @@ -449,9 +453,9 @@ function visibilityRow(row, var1, var2, var3) { var val1 = parseFloat($(var1).text()); // zu Berücksichtigung von 0,00 var val2 = parseFloat($(var2).text()); var val3 = parseFloat($(var3).text()); - if ( ( (val1 == 0) || ($(var1).text() == "") ) && - ( (val2 == 0) || ($(var2).text() == "") ) && - ( (val3 == 0) || ($(var3).text() == "") ) ) { + if (((val1 == 0) || ($(var1).text() == "")) && + ((val2 == 0) || ($(var2).text() == "")) && + ((val3 == 0) || ($(var3).text() == ""))) { hideSection(row); } else { @@ -470,17 +474,17 @@ function visibilityCard(card, mqttpayload) { hideSection(card); } else { showSection(card); - if ( (card.match( /^[#]lp[2-8]$/i)) && lpGesCardShown == false ) { + if ((card.match(/^[#]lp[2-8]$/i)) && lpGesCardShown == false) { showSection('#lpges'); lpGesCardShown = true; - } else if ( card.match(/^[#]inverter[1-2]+$/i) ) { - if ( card == "#inverter1" ) { + } else if (card.match(/^[#]inverter[1-2]+$/i)) { + if (card == "#inverter1") { pv1 = mqttpayload; } else { pv2 = mqttpayload; } - if ( (pv1 + pv2) > 0 ) { + if ((pv1 + pv2) > 0) { showSection('#pvGes'); } else { hideSection('#pvGes'); diff --git a/web/status/status.php b/web/status/status.php index d59b68fc8c..9164b72c9f 100644 --- a/web/status/status.php +++ b/web/status/status.php @@ -364,11 +364,11 @@ function llanbindunglog() { Tagesertrag [kWh]
--
- + Monatsertrag [kWh]
--
- + Jahresertrag [kWh]
--
@@ -666,7 +666,7 @@ function processPreloader(mqttTopic) { // load mqtt library 'js/mqttws31.js', // functions for processing messages - 'status/processAllMqttMsg.js?ver=20210209', + 'status/processAllMqttMsg.js?ver=20230818', // functions performing mqtt and start mqtt-service 'status/setupMqttServices.js?ver=20210209', ]; From 8fe62d9139d64fed6adb99bb45518bc702a07f95 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 21 Aug 2023 08:19:31 +0200 Subject: [PATCH 067/121] fix debug log messages --- ladelog.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ladelog.sh b/ladelog.sh index 0607884038..9c518c098d 100755 --- a/ladelog.sh +++ b/ladelog.sh @@ -122,7 +122,7 @@ processChargepoint() { # calculate actual meter value difference since plugged pluggedladungbishergeladen=$(echo "scale=2;($llkwh - $pluggedladungstartkwh)/1" | bc | sed 's/^\./0./') echo "$pluggedladungbishergeladen" >"${RAMDISKDIR}/pluggedladungbishergeladen${chargePointKey}" - openwbDebugLog "CHARGESTAT" 1 "charged since plugged: $pluggedladungstartkwh - $llkwh = $pluggedladungbishergeladen" + openwbDebugLog "CHARGESTAT" 1 "charged since plugged: $llkwh - $pluggedladungstartkwh = $pluggedladungbishergeladen" # reset unplug timer echo 0 >"${RAMDISKDIR}/pluggedtimer${chargePointKey}" else @@ -171,7 +171,7 @@ processChargepoint() { # format time charged restzeittext=$(getTimeDiffString "$restzeit") echo "$restzeittext" >"${RAMDISKDIR}/restzeit${chargePointKey}" - openwbDebugLog "CHARGESTAT" 1 "energyCharged=${bishergeladen}kWh; rangeCharged=${gelr}km; timeRemaining=${restzeit}m ($restzeittext)" + openwbDebugLog "CHARGESTAT" 1 "energyCharged: ${llkwh} - ${ladelstart}=${bishergeladen}kWh; rangeCharged=${gelr}km; timeRemaining=${restzeit}m ($restzeittext)" else # new charge detected openwbDebugLog "CHARGESTAT" 1 "new charge detected" From d0b0738fa37e353d2c006781bad842a17737a66b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 21 Aug 2023 14:21:28 +0200 Subject: [PATCH 068/121] fix update config --- 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 bb19be3575..670418687e 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -332,7 +332,7 @@ class UpdateConfig: "^openWB/system/current_commit", "^openWB/system/current_missing_commits", "^openWB/system/dataprotection_acknowledged$", - "^openWB/system/datastore_version" + "^openWB/system/datastore_version", "^openWB/system/debug_level$", "^openWB/system/device/[0-9]+/component/[0-9]+/config$", "^openWB/system/device/[0-9]+/component/[0-9]+/simulation$", From 3b1f7f6f1cd0bd797360001b6f13742e7eb378f0 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 28 Jul 2023 08:40:28 +0200 Subject: [PATCH 069/121] draft --- .../measurement_logging/__init__.py | 0 .../measurement_logging/conftest.py | 120 ++++++++ .../measurement_logging/process_log.py | 268 ++++++++++++++++++ .../measurement_logging/process_log_test.py | 26 ++ .../update_daily_yields.py | 57 ++++ .../update_daily_yields_test.py | 21 ++ .../measurement_logging/write_log.py | 241 ++++++++++++++++ .../measurement_logging/write_log_test.py | 16 ++ packages/helpermodules/update_config.py | 1 + 9 files changed, 750 insertions(+) create mode 100644 packages/helpermodules/measurement_logging/__init__.py create mode 100644 packages/helpermodules/measurement_logging/conftest.py create mode 100644 packages/helpermodules/measurement_logging/process_log.py create mode 100644 packages/helpermodules/measurement_logging/process_log_test.py create mode 100644 packages/helpermodules/measurement_logging/update_daily_yields.py create mode 100644 packages/helpermodules/measurement_logging/update_daily_yields_test.py create mode 100644 packages/helpermodules/measurement_logging/write_log.py create mode 100644 packages/helpermodules/measurement_logging/write_log_test.py diff --git a/packages/helpermodules/measurement_logging/__init__.py b/packages/helpermodules/measurement_logging/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/helpermodules/measurement_logging/conftest.py b/packages/helpermodules/measurement_logging/conftest.py new file mode 100644 index 0000000000..c0861f1c93 --- /dev/null +++ b/packages/helpermodules/measurement_logging/conftest.py @@ -0,0 +1,120 @@ +import threading +import pytest +from control.chargepoint import chargepoint + +from control.chargepoint.chargepoint_all import AllChargepoints +from control import bat_all, counter, pv_all, pv +from control import data + + +@pytest.fixture(autouse=True) +def data_module() -> None: + data.data_init(threading.Event()) + data.data.bat_data.update({"all": bat_all.BatAll(), "bat2": bat_all.Bat(2)}) + data.data.counter_data.update({"counter0": counter.Counter(0)}) + data.data.cp_all_data = AllChargepoints() + data.data.cp_data.update({"cp4": chargepoint.Chargepoint( + 4, None), "cp5": chargepoint.Chargepoint(5, None), "cp6": chargepoint.Chargepoint(6, None)}) + data.data.pv_data.update({"all": pv_all.PvAll(), "pv1": pv.Pv(1)}) + + +EXPECTED = { + "openWB/set/bat/get/daily_imported": 175.534, + "openWB/set/bat/get/daily_exported": 0, + "openWB/set/bat/2/get/daily_imported": 172.556, + "openWB/set/bat/2/get/daily_exported": 0, + "openWB/set/counter/0/get/daily_imported": 1.1, + "openWB/set/counter/0/get/daily_exported": 1.105, + "openWB/set/chargepoint/get/daily_imported": 105, + "openWB/set/chargepoint/get/daily_exported": 0, + "openWB/set/chargepoint/4/get/daily_imported": 85, + "openWB/set/chargepoint/4/get/daily_exported": 0, + "openWB/set/chargepoint/5/get/daily_imported": 0, + "openWB/set/chargepoint/5/get/daily_exported": 0, + "openWB/set/chargepoint/6/get/daily_imported": 2, + "openWB/set/chargepoint/6/get/daily_exported": 0, + "openWB/set/pv/get/daily_exported": 251, + "openWB/set/pv/1/get/daily_exported": 247} + +SAMPLE = [{'bat': {'all': {'exported': 0, 'imported': 58.774, 'soc': 51}, + 'bat2': {'exported': 0, 'imported': 61.752, 'soc': 51}}, + 'counter': {'counter0': {'exported': 3.816, 'imported': 0.284}}, + 'cp': {'all': {'exported': 0, 'imported': 15}, + 'cp3': {'exported': 0, 'imported': 10}, + 'cp4': {'exported': 0, 'imported': 5}, + 'cp5': {'exported': 0, 'imported': 0}}, + 'date': '13:41', + 'ev': {'ev0': {'soc': 0}}, + 'pv': {'all': {'exported': 88}, 'pv1': {'exported': 92}}, + "sh": {}, + 'timestamp': 1654861269}, + {'bat': {'all': {'exported': 0, 'imported': 146.108, 'soc': 53}, + 'bat2': {'exported': 0, 'imported': 149.099, 'soc': 53}}, + 'counter': {'counter0': {'exported': 4.317, 'imported': 0.772}}, + 'cp': {'all': {'exported': 0, 'imported': 100}, + 'cp3': {'exported': 0, 'imported': 20}, + 'cp4': {'exported': 0, 'imported': 80}, + 'cp5': {'exported': 0, 'imported': 0}}, + 'date': '13:46', + 'ev': {'ev0': {'soc': 4}}, + 'pv': {'all': {'exported': 214}, 'pv1': {'exported': 214}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 100, "exported": 0}}, + 'timestamp': 1654861569}, + {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, + 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, + 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, + 'cp': {'all': {'exported': 0, 'imported': 120}, + # remove existing module + 'cp4': {'exported': 0, 'imported': 90}, + 'cp5': {'exported': 0, 'imported': 0}, + # add new module later + 'cp6': {'exported': 0, 'imported': 64}}, + 'date': '13:51', + 'ev': {'ev0': {'soc': 6}}, + 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 200, "exported": 0}}, + 'timestamp': 1654861869}, + {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, + 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, + 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, + 'cp': {'all': {'exported': 0, 'imported': 120}, + 'cp4': {'exported': 0, 'imported': 90}, + 'cp5': {'exported': 0, 'imported': 0}, + 'cp6': {'exported': 0, 'imported': 66}}, + 'date': '13:51', + 'ev': {'ev0': {'soc': 6}}, + 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 400, "exported": 0}}, + 'timestamp': 1654862069}] + +TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, + 'bat2': {'exported': 0, 'imported': 172.556}}, + 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, + 'cp': {'all': {'exported': 0, 'imported': 105}, + 'cp3': {'exported': 0, 'imported': 10}, + 'cp4': {'exported': 0, 'imported': 85}, + 'cp5': {'exported': 0, 'imported': 0}, + 'cp6': {'exported': 0, 'imported': 2}}, + 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 247}}, + "sh": {"sh1": {"imported": 300, "exported": 0}}} + +NAMES = {'bat2': "Speicher", + 'counter0': "Zähler", + 'cp3': "cp3", + 'cp4': "Standard-Ladepunkt", + 'cp5': "Standard-Ladepunkt", + 'cp6': "Standard-Ladepunkt", + 'pv1': "Wechselrichter", + "sh1": "Smarthome1"} + +POWER_SOURCE_TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, + 'bat2': {'exported': 0, 'imported': 172.556}}, + 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, + 'cp': {'all': {'exported': 0, 'imported': 105}, + 'cp3': {'exported': 0, 'imported': 10}, + 'cp4': {'exported': 0, 'imported': 85}, + 'cp5': {'exported': 0, 'imported': 0}, + 'cp6': {'exported': 0, 'imported': 2}}, + 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 247}}, + "sh": {"sh1": {"imported": 300, "exported": 0}}, + "power_source": {"grid": 1.46, "pv": 0, "bat": 0, "cp": 0}} diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py new file mode 100644 index 0000000000..23cb14efa2 --- /dev/null +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -0,0 +1,268 @@ +from decimal import Decimal +import json +import logging +from pathlib import Path +from typing import Dict, List + +from helpermodules import timecheck + +log = logging.getLogger(__name__) + + +def string_to_float(value: str, default: float = 0) -> float: + try: + return float(value) + except ValueError: + return default + + +def string_to_int(value: str, default: int = 0) -> int: + try: + return int(value) + except ValueError: + return default + + +def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: + # beim Jahres-Log werden die Summen aus den Monatssummen berechnet (sum_up_diffs=True), + # bei allen anderen aus den absoluten Zählerwerten + totals: Dict[str, Dict] = {"cp": {}, "counter": {}, "pv": {}, "bat": {}, "sh": {}} + prev_entry: Dict = {} + for group in totals.keys(): + for entry in entries: + for module in entry[group]: + if not prev_entry or module not in totals[group]: + if sum_up_diffs: + totals[group][module] = entry[group][module] + else: + totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} + else: + for key, value in entry[group][module].items(): + if key != "soc" and "temp" not in key: + if value == "": + # Manchmal fehlen Werte im alten Log + value = 0 + if sum_up_diffs: + value = (Decimal(str(value)) + + Decimal(str(totals[group][module][key]))) + else: + try: + prev_value = prev_entry[group][module][key] + # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden die + # Werte zusammen addiert. + except KeyError: + prev_value = entry[group][module][key] + if prev_value == "": + # Manchmal fehlen Werte im alten Log + prev_value = 0 + # avoid floating point issues with using Decimal + value = (Decimal(str(value)) + - Decimal(str(prev_value)) + + Decimal(str(totals[group][module][key]))) + value = f'{value: f}' + # remove trailing zeros + totals[group][module][key] = string_to_float( + value) if "." in value else string_to_int(value) + prev_entry = entry + return totals + +# {"entries": [ +# { +# "timestamp": int, +# "date": str, +# "cp": { +# "cp1": {"imported": Zählerstand in kW, "exported": Zählerstand in kW} +# ... (dynamisch, je nach konfigurierter Anzahl) +# "all": { +# "imported": Zählerstand in kW, +# "exported": Zählerstand in kW +# } +# } +# "ev": { +# "ev1": {"soc": int in %} +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "counter": { +# "counter0": {"imported": kW, "exported": kW} +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "pv": { +# "all": {"exported": kW} +# "pv0": {"exported": kW} +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "bat": { +# "all": {"imported": kW, "exported": kW, "soc": int in %} +# "bat0": {"imported": kW, "exported": kW, "soc": int in %} +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "sh": { +# "sh1": { +# "exported": kW, +# "imported": kW, +# wenn konfiguriert: +# "temp1": int in °C, +# "temp2": int in °C, +# "temp3": int in °C +# }, +# ... (dynamisch, je nach Anzahl konfigurierter Geräte) +# }, +# "power_source": {"grid": %, "pv": %, "bat": %, "cp": %} +# }], +# "totals": { +# {'bat': {'all': {'exported': 0, 'imported': 175.534}, +# 'bat2': {'exported': 0, 'imported': 172.556}}, +# 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, +# 'cp': {'all': {'exported': 0, 'imported': 105}, +# 'cp3': {'exported': 0, 'imported': 10}, +# 'cp4': {'exported': 0, 'imported': 85}, +# 'cp5': {'exported': 0, 'imported': 0}, +# 'cp6': {'exported': 0, 'imported': 64}}, +# 'ev': {'ev1': {}}, +# 'pv': {'all': {'imported': 251}, 'pv1': {'imported': 247}}}, +# 'sh': { 'sh1': {'exported': 123, 'imported': 123}}, +# "power_source": {"grid": %, "pv": %, "bat": %, "cp": %} +# }, +# "names": { +# "counter0": "Mein EVU-Zähler", +# "bat2": "Mein toller Speicher", +# ... +# } +# } + + +def get_daily_log(date: str): + data = _collect_daily_log_data(date) + data = _analyse_power_source(data) + data = _convert_data_to_kW(data) + return data + + +def _collect_daily_log_data(date: str): + try: + with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(date+".json")), "r") as jsonFile: + log_data = json.load(jsonFile) + try: + next_date = timecheck.get_relative_date_string(date, day_offset=1) + with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(next_date+".json")), + "r") as nextJsonFile: + next_log_data = json.load(nextJsonFile) + log_data["entries"].append(next_log_data["entries"][0]) + except FileNotFoundError: + pass + return {"entries": log_data, "totals": get_totals(log_data)} + except FileNotFoundError: + pass + return [] + + +def get_monthly_log(date: str): + data = _collect_monthly_log_data(date) + data = _analyse_power_source(data) + return data + + +def _collect_monthly_log_data(date: str): + try: + with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(date+".json")), "r") as jsonFile: + log_data = json.load(jsonFile) + try: + next_date = timecheck.get_relative_date_string(date, month_offset=1) + with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(next_date+".json")), + "r") as nextJsonFile: + next_log_data = json.load(nextJsonFile) + log_data["entries"].append(next_log_data["entries"][0]) + except FileNotFoundError: + pass + return {"entries": log_data, "totals": get_totals(log_data)} + except FileNotFoundError: + pass + return [] + + +def get_yearly_log(year: str): + data = _collect_yearly_log_data(year) + data = _analyse_power_source(data) + return data + + +def _collect_yearly_log_data(year: str): + entries = [] + dates = [] + for month in range(1, 13): + dates.append(f"{year}{month:02}") + dates.append(f"{int(year)+1}01") + for date in dates: + try: + with open(Path(__file__).resolve().parents[2]/"data"/"monthly_log"/f"{date}.json", + "r") as jsonFile: + content = json.load(jsonFile) + content = content["totals"] + content.update({"date": date, "timestamp": timecheck.convert_YYYYMM_to_unix_timestamp(date)}) + entries.append(content) + try: + next_date = timecheck.get_relative_date_string(date, month_offset=1) + with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(next_date+".json")), + "r") as nextJsonFile: + next_log_data = json.load(nextJsonFile) + next_log_data = next_log_data["totals"] + next_log_data.update( + {"date": date, "timestamp": timecheck.convert_YYYYMM_to_unix_timestamp(date)}) + entries.append(content) + except FileNotFoundError: + pass + except FileNotFoundError: + log.debug(f"Kein Log für Monat {date} gefunden.") + return {"entries": entries, "totals": get_totals(entries, sum_up_diffs=True)} + + +def _analyse_power_source(data): + for entry in data["entries"]: + entry = _analyse_percentage(entry) + _analyse_percentage(data["totals"]) + + +def _analyse_percentage(entry): + def format(value): + return round(value/100, 2) + bat_imported = entry["bat"]["all"]["imported"] + bat_exported = entry["bat"]["all"]["exported"] + cp_exported = entry["cp"]["all"]["exported"] + pv = entry["pv"]["all"]["exported"] + for counter in entry["counter"]: + if counter.get("grid") is None: + return + if counter["grid"]: + grid_imported = counter["imported"] + grid_exported = counter["exported"] + consumption = grid_imported - grid_exported + pv + bat_exported - bat_imported + cp_exported + entry["power_source"] = {"grid": format(grid_imported / consumption), + "pv": format((pv - grid_exported - bat_imported) / consumption), + "bat": format(bat_exported/consumption), + "cp": format(cp_exported/consumption)} + return entry + + +def _convert_data_to_kW(data): + for i in range(0, len(data["entries"])-1): + entry = data["entries"][0] + next_entry = data["entries"][1] + entry = _convert(entry, next_entry) + + +def _convert(entry, next_entry): + time_diff = entry["timestamp"] - next_entry["timestamp"] + for type in ("bat", "counter", "cp", "pv", "sh"): + for key in entry[type].keys(): + if key == "imported" or key == "exported": + value = entry[type][key] + next_value = next_entry[type][key] + entry[type][key] = _convert_value_to_kW(value, next_value, time_diff) + return entry + + +def _convert_value_to_kW(value, next_value, time_diff): + energy_diff = next_value - value + energy_diff_ws = energy_diff * 3600 # Ws + power = energy_diff_ws / time_diff # W + return power / 1000 # kW diff --git a/packages/helpermodules/measurement_logging/process_log_test.py b/packages/helpermodules/measurement_logging/process_log_test.py new file mode 100644 index 0000000000..7663c41efd --- /dev/null +++ b/packages/helpermodules/measurement_logging/process_log_test.py @@ -0,0 +1,26 @@ +from helpermodules.measurement_logging.conftest import POWER_SOURCE_TOTALS, SAMPLE, TOTALS +from helpermodules.measurement_logging.process_log import _analyse_percentage, _convert_value_to_kW, get_totals + + +def test_get_totals(): + # setup and execution + totals = get_totals(SAMPLE) + + # evaluation + assert totals == TOTALS + + +def test_analyse_percentage(): + # setup and execution + entry = _analyse_percentage(TOTALS) + + # evaluation + assert entry == POWER_SOURCE_TOTALS + + +def test_convert_value_to_kW(): + # setup and execution + power = _convert_value_to_kW(100, 250, 300) + + # evaluation + assert power == 1.8 diff --git a/packages/helpermodules/measurement_logging/update_daily_yields.py b/packages/helpermodules/measurement_logging/update_daily_yields.py new file mode 100644 index 0000000000..91bb73af54 --- /dev/null +++ b/packages/helpermodules/measurement_logging/update_daily_yields.py @@ -0,0 +1,57 @@ +import logging +from typing import Dict + +from control import data +from helpermodules.measurement_logging.process_log import get_totals +from helpermodules.pub import Pub +from control.bat import Bat +from control.chargepoint.chargepoint import Chargepoint +from control.counter import Counter +from control.ev import Ev +from control.pv import Pv + +log = logging.getLogger(__name__) + + +def update_daily_yields(entries): + """ veröffentlicht die Tageserträge für Ladepunkte, Zähler, PV und Speicher. + """ + totals = get_totals(entries) + [update_module_yields(type, totals) for type in ("bat", "counter", "cp", "pv")] + data.data.counter_all_data.calc_daily_yield_home_consumption() + + +def update_module_yields(module: str, totals: Dict) -> None: + def update_imported_exported(daily_imported: float, daily_exported: float) -> None: + module_data.data.get.daily_imported = daily_imported + module_data.data.get.daily_exported = daily_exported + if module == "cp": + topic = "chargepoint" + else: + topic = module + if isinstance(module_data, (Ev, Chargepoint, Pv, Bat, Counter)): + Pub().pub(f"openWB/set/{topic}/{module_data.num}/get/daily_imported", daily_imported) + Pub().pub(f"openWB/set/{topic}/{module_data.num}/get/daily_exported", daily_exported) + else: + Pub().pub(f"openWB/set/{topic}/get/daily_imported", daily_imported) + Pub().pub(f"openWB/set/{topic}/get/daily_exported", daily_exported) + + def update_exported(daily_exported: float) -> None: + module_data.data.get.daily_exported = daily_exported + if module in m: + Pub().pub(f"openWB/set/pv/{module_data.num}/get/daily_exported", daily_exported) + else: + Pub().pub("openWB/set/pv/get/daily_exported", daily_exported) + + for m in totals[module]: + if m in getattr(data.data, f"{module}_data"): + module_data = getattr(data.data, f"{module}_data")[m] + if module == "pv": + update_exported(totals[module][m]["exported"]) + else: + update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) + else: + log.info(f"Modul {m} wurde zwischenzeitlich gelöscht und wird daher nicht mehr aufgeführt.") + if module == "cp" and m == "all": + module_data = data.data.cp_all_data + update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) diff --git a/packages/helpermodules/measurement_logging/update_daily_yields_test.py b/packages/helpermodules/measurement_logging/update_daily_yields_test.py new file mode 100644 index 0000000000..27ab364df6 --- /dev/null +++ b/packages/helpermodules/measurement_logging/update_daily_yields_test.py @@ -0,0 +1,21 @@ +import pytest + +from helpermodules.measurement_logging.conftest import EXPECTED, TOTALS +from helpermodules.measurement_logging.update_daily_yields import update_module_yields + + +def test_update_module_yields(mock_pub): + # setup and execution + [update_module_yields(type, TOTALS) for type in ("bat", "counter", "cp", "pv")] + + # evaluation + for topic, value in EXPECTED.items(): + for call in mock_pub.mock_calls: + try: + if call.args[0] == topic: + assert value == call.args[1] + break + except IndexError: + pass + else: + pytest.fail(f"Topic {topic} is missing") diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py new file mode 100644 index 0000000000..a6203bc5f4 --- /dev/null +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -0,0 +1,241 @@ +import json +import logging +import pathlib +from pathlib import Path +import re +import string +from paho.mqtt.client import Client as MqttClient, MQTTMessage +from typing import Dict, Tuple + +from control import data +from helpermodules.broker import InternalBrokerClient +from helpermodules import timecheck +from helpermodules.utils.topic_parser import decode_payload, get_index +from modules.common.utils.component_parser import get_component_name_by_id + +log = logging.getLogger(__name__) + +# erstellt für jeden Tag eine Datei, die die Daten für den Langzeitgraph enthält. +# Dazu werden alle 5 Min folgende Daten als json-Liste gespeichert: +# {"entries": [ +# { +# "timestamp": int, +# "date": str, +# "cp": { +# "cp1": { +# "imported": Zählerstand in Wh, +# "exported": Zählerstand in Wh +# } +# ... (dynamisch, je nach konfigurierter Anzahl) +# "all": { +# "imported": Zählerstand in Wh, +# "exported": Zählerstand in Wh +# } +# } +# "ev": { +# "ev1": { +# "soc": int in % +# } +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "counter": { +# "counter0": { +# "grid": bool, +# "imported": Wh, +# "exported": Wh +# } +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "pv": { +# "all": { +# "exported": Wh +# } +# "pv0": { +# "exported": Wh +# } +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "bat": { +# "all": { +# "imported": Wh, +# "exported": Wh, +# "soc": int in % +# } +# "bat0": { +# "imported": Wh, +# "exported": Wh, +# "soc": int in % +# } +# ... (dynamisch, je nach konfigurierter Anzahl) +# } +# "sh": { +# "sh1": { +# "exported": Wh, +# "imported": Wh, +# wenn konfiguriert: +# "temp1": int in °C, +# "temp2": int in °C, +# "temp3": int in °C +# }, +# ... (dynamisch, je nach Anzahl konfigurierter Geräte) +# } +# }] +# } + + +def save_log(folder): + """ Parameter + --------- + folder: str + gibt an, ob ein Tages-oder Monats-Log-Eintrag erstellt werden soll. + """ + if folder == "daily": + date = timecheck.create_timestamp_time() + else: + date = timecheck.create_timestamp_YYYYMMDD() + current_timestamp = timecheck.create_timestamp_unix() + cp_dict = {} + for cp in data.data.cp_data: + try: + if "cp" in cp: + cp_dict.update({cp: {"imported": data.data.cp_data[cp].data.get.imported, + "exported": data.data.cp_data[cp].data.get.exported}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für Ladepunkt "+str(cp)) + try: + cp_dict.update( + {"all": {"imported": data.data.cp_all_data.data.get.imported, + "exported": data.data.cp_all_data.data.get.exported}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul") + + ev_dict = {} + for ev in data.data.ev_data: + try: + if "ev" in ev: + ev_dict.update( + {ev: {"soc": data.data.ev_data[ev].data.get.soc}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für EV "+str(ev)) + + counter_dict = {} + for counter in data.data.counter_data: + try: + if "counter" in counter: + counter_dict.update({counter: + {"imported": data.data.counter_data[counter].data.get.imported, + "exported": data.data.counter_data[counter].data.get.exported}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für Zähler "+str(counter)) + + pv_dict = {} + if data.data.pv_all_data.data.config.configured: + for pv in data.data.pv_data: + try: + pv_dict.update( + {pv: {"exported": data.data.pv_data[pv].data.get.exported}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für Wechselrichter "+str(pv)) + + bat_dict = {} + if data.data.bat_all_data.data.config.configured: + for bat in data.data.bat_data: + try: + bat_dict.update({bat: {"imported": data.data.bat_data[bat].data.get.imported, + "exported": data.data.bat_data[bat].data.get.exported, + "soc": data.data.bat_data[bat].data.get.soc}}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für Speicher "+str(bat)) + + sh_dict, sh_names = LegacySmartHomeLogData().update() + + new_entry = { + "timestamp": current_timestamp, + "date": date, + "cp": cp_dict, + "ev": ev_dict, + "counter": counter_dict, + "pv": pv_dict, + "bat": bat_dict, + "sh": sh_dict + } + + # json-Objekt in Datei einfügen + if folder == "daily": + (pathlib.Path(__file__).resolve().parents[2] / "data"/"daily_log").mkdir(mode=0o755, + parents=True, exist_ok=True) + filepath = str( + Path(__file__).resolve().parents[2] / "data" / "daily_log" / + (timecheck.create_timestamp_YYYYMMDD() + ".json")) + else: + (pathlib.Path(__file__).resolve().parents[2] / "data"/"monthly_log").mkdir(mode=0o755, + parents=True, exist_ok=True) + filepath = str( + Path(__file__).resolve().parents[2] / "data" / "monthly_log" / + (timecheck.create_timestamp_YYYYMM() + ".json")) + try: + with open(filepath, "r") as jsonFile: + content = json.load(jsonFile) + except FileNotFoundError: + with open(filepath, "w") as jsonFile: + json.dump({"entries": [], "totals": {}, "names": {}}, jsonFile) + with open(filepath, "r") as jsonFile: + content = json.load(jsonFile) + entries = content["entries"] + entries.append(new_entry) + content["names"] = get_names(content["totals"], sh_names) + with open(filepath, "w") as jsonFile: + json.dump(content, jsonFile) + return content["entries"] + + +def get_names(totals: Dict, sh_names: Dict) -> Dict: + names = sh_names + for group in totals.items(): + if group[0] == "sh": + continue + for entry in group[1]: + try: + if "cp" in entry: + names.update({entry: data.data.cp_data[entry].data.config.name}) + elif "all" != entry: + id = entry.strip(string.ascii_letters) + names.update({entry: get_component_name_by_id(int(id))}) + except (ValueError, KeyError, AttributeError): + names.update({entry: entry}) + return names + + +class LegacySmartHomeLogData: + def __init__(self) -> None: + self.all_received_topics: Dict = {} + + def update(self) -> Tuple[Dict, Dict]: + sh_dict: Dict = {} + sh_names: Dict = {} + try: + InternalBrokerClient("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: + index = get_index(topic) + sh_dict.update({f"sh{index}": {}}) + for topic, payload in self.all_received_topics.items(): + if f"openWB/LegacySmartHome/Devices/{index}/Wh" == topic: + sh_dict[f"sh{index}"].update({"imported": decode_payload(payload), "exported": 0}) + for sensor_id in range(0, 3): + if f"openWB/LegacySmartHome/Devices/{index}/TemperatureSensor{sensor_id}" == topic: + sh_dict[f"sh{index}"].update({f"temp{sensor_id}": decode_payload(payload)}) + for topic, payload in self.all_received_topics.items(): + if f"openWB/LegacySmartHome/config/get/Devices/{index}/device_name" == topic: + sh_names.update({f"sh{index}": decode_payload(payload)}) + except Exception: + log.exception("Fehler im Werte-Logging-Modul für SmartHome") + finally: + return sh_dict, sh_names + + def on_connect(self, client: MqttClient, userdata, flags: dict, rc: int): + client.subscribe("openWB/LegacySmartHome/#", 2) + + def on_message(self, client: MqttClient, userdata, msg: MQTTMessage): + self.all_received_topics.update({msg.topic: msg.payload}) diff --git a/packages/helpermodules/measurement_logging/write_log_test.py b/packages/helpermodules/measurement_logging/write_log_test.py new file mode 100644 index 0000000000..5852feb5cc --- /dev/null +++ b/packages/helpermodules/measurement_logging/write_log_test.py @@ -0,0 +1,16 @@ +from unittest.mock import Mock + +from helpermodules.measurement_logging import write_log +from helpermodules.measurement_logging.conftest import NAMES, TOTALS +from helpermodules.measurement_logging.write_log import get_names + + +def test_get_names(monkeypatch): + # setup + component_names_mock = Mock(side_effect=["Speicher", "Zähler", "Wechselrichter"]) + monkeypatch.setattr(write_log, "get_component_name_by_id", component_names_mock) + # execution + names = get_names(TOTALS, {"sh1": "Smarthome1"}) + + # evaluation + assert names == NAMES diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 670418687e..9c76bac464 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -444,6 +444,7 @@ def update(self): self.__remove_outdated_topics() self._remove_invalid_topics() self.__pub_missing_defaults() + time.sleep(2) self.__update_version() self.__solve_breaking_changes() except Exception: From fb09b197d689c42583060628e47d1b3f3dc003be Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 28 Jul 2023 09:58:50 +0200 Subject: [PATCH 070/121] fixes --- packages/helpermodules/command.py | 8 +- .../data_migration/data_migration.py | 3 +- packages/helpermodules/measurement_log.py | 429 ------------------ .../helpermodules/measurement_log_test.py | 146 ------ .../measurement_logging/conftest.py | 90 ++-- .../measurement_logging/process_log.py | 12 +- .../measurement_logging/write_log.py | 29 +- packages/helpermodules/update_config.py | 7 +- packages/main.py | 6 +- 9 files changed, 77 insertions(+), 653 deletions(-) delete mode 100644 packages/helpermodules/measurement_log.py delete mode 100644 packages/helpermodules/measurement_log_test.py diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 83a4502f4d..505adc4adf 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -13,9 +13,9 @@ from control.chargepoint import chargepoint from control.chargepoint.chargepoint_template import get_autolock_plan_default, get_chargepoint_template_default -from helpermodules import measurement_log from helpermodules.broker import InternalBrokerClient 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, pub_error_global from helpermodules.parse_send_debug import parse_send_debug_data from helpermodules.pub import Pub @@ -553,15 +553,15 @@ def getChargeLog(self, connection_id: str, payload: dict) -> None: def getDailyLog(self, connection_id: str, payload: dict) -> None: Pub().pub(f'openWB/set/log/daily/{payload["data"]["day"]}', - measurement_log.get_daily_log(payload["data"]["day"])) + get_daily_log(payload["data"]["day"])) def getMonthlyLog(self, connection_id: str, payload: dict) -> None: Pub().pub(f'openWB/set/log/monthly/{payload["data"]["month"]}', - measurement_log.get_monthly_log(payload["data"]["month"])) + get_monthly_log(payload["data"]["month"])) def getYearlyLog(self, connection_id: str, payload: dict) -> None: Pub().pub(f'openWB/set/log/yearly/{payload["data"]["year"]}', - measurement_log.get_yearly_log(payload["data"]["year"])) + get_yearly_log(payload["data"]["year"])) def initCloud(self, connection_id: str, payload: dict) -> None: parent_file = Path(__file__).resolve().parents[2] diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py index 80bcfd9876..f67dd775f3 100644 --- a/packages/helpermodules/data_migration/data_migration.py +++ b/packages/helpermodules/data_migration/data_migration.py @@ -22,7 +22,8 @@ from dataclass_utils import dataclass_from_dict from helpermodules.data_migration.id_mapping import MapId from helpermodules.hardware_configuration import update_hardware_configuration -from helpermodules.measurement_log import LegacySmartHomeLogData, get_names, get_totals, string_to_float, string_to_int +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.utils import thread_handler from helpermodules.pub import Pub diff --git a/packages/helpermodules/measurement_log.py b/packages/helpermodules/measurement_log.py deleted file mode 100644 index f42433a574..0000000000 --- a/packages/helpermodules/measurement_log.py +++ /dev/null @@ -1,429 +0,0 @@ -from decimal import Decimal -import json -import logging -import pathlib -from pathlib import Path -import re -import string -from paho.mqtt.client import Client as MqttClient, MQTTMessage -from typing import Dict, List, Tuple - -from control import data -from helpermodules.broker import InternalBrokerClient -from helpermodules.pub import Pub -from helpermodules import timecheck -from control.bat import Bat -from control.chargepoint.chargepoint import Chargepoint -from control.counter import Counter -from control.ev import Ev -from control.pv import Pv -from helpermodules.utils.topic_parser import decode_payload, get_index -from modules.common.utils.component_parser import get_component_name_by_id - -log = logging.getLogger(__name__) - - -def measurement_log_daily(): - try: - totals = save_log("daily") - update_daily_yields(totals) - except Exception: - log.exception("Fehler im Werte-Logging-Modul") - - -def save_log(folder): - """ erstellt für jeden Tag eine Datei, die die Daten für den Langzeitgraph enthält. - Dazu werden alle 5 Min folgende Daten als json-Liste gespeichert: - {"entries": [ - { - "timestamp": int, - "date": str, - "cp": { - "cp1": { - "imported": Zählerstand in Wh, - "exported": Zählerstand in Wh - } - ... (dynamisch, je nach konfigurierter Anzahl) - "all": { - "imported": Zählerstand in Wh, - "exported": Zählerstand in Wh - } - } - "ev": { - "ev1": { - "soc": int in % - } - ... (dynamisch, je nach konfigurierter Anzahl) - } - "counter": { - "counter0": { - "imported": Wh, - "exported": Wh - } - ... (dynamisch, je nach konfigurierter Anzahl) - } - "pv": { - "all": { - "exported": Wh - } - "pv0": { - "exported": Wh - } - ... (dynamisch, je nach konfigurierter Anzahl) - } - "bat": { - "all": { - "imported": Wh, - "exported": Wh, - "soc": int in % - } - "bat0": { - "imported": Wh, - "exported": Wh, - "soc": int in % - } - ... (dynamisch, je nach konfigurierter Anzahl) - } - "sh": { - "sh1": { - "exported": Wh, - "imported": Wh, - wenn konfiguriert: - "temp1": int in °C, - "temp2": int in °C, - "temp3": int in °C - }, - ... (dynamisch, je nach Anzahl konfigurierter Geräte) - } - }], - "totals": { - {'bat': {'all': {'exported': 0, 'imported': 175.534}, - 'bat2': {'exported': 0, 'imported': 172.556}}, - 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, - 'cp': {'all': {'exported': 0, 'imported': 105}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 85}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 64}}, - 'ev': {'ev1': {}}, - 'pv': {'all': {'imported': 251}, 'pv1': {'imported': 247}}}, - 'sh': { 'sh1': {'exported': 123, 'imported': 123}} - }, - "names": { - "counter0": "Mein EVU-Zähler", - "bat2": "Mein toller Speicher", - ... - } - } - - Parameter - --------- - folder: str - gibt an, ob ein Tages-oder Monats-Log-Eintrag erstellt werden soll. - """ - if folder == "daily": - date = timecheck.create_timestamp_time() - else: - date = timecheck.create_timestamp_YYYYMMDD() - current_timestamp = timecheck.create_timestamp_unix() - cp_dict = {} - for cp in data.data.cp_data: - try: - if "cp" in cp: - cp_dict.update({cp: {"imported": data.data.cp_data[cp].data.get.imported, - "exported": data.data.cp_data[cp].data.get.exported}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für Ladepunkt "+str(cp)) - try: - cp_dict.update( - {"all": {"imported": data.data.cp_all_data.data.get.imported, - "exported": data.data.cp_all_data.data.get.exported}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul") - - ev_dict = {} - for ev in data.data.ev_data: - try: - if "ev" in ev: - ev_dict.update( - {ev: {"soc": data.data.ev_data[ev].data.get.soc}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für EV "+str(ev)) - - counter_dict = {} - for counter in data.data.counter_data: - try: - if "counter" in counter: - counter_dict.update({counter: - {"imported": data.data.counter_data[counter].data.get.imported, - "exported": data.data.counter_data[counter].data.get.exported}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für Zähler "+str(counter)) - - pv_dict = {} - if data.data.pv_all_data.data.config.configured: - for pv in data.data.pv_data: - try: - pv_dict.update( - {pv: {"exported": data.data.pv_data[pv].data.get.exported}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für Wechselrichter "+str(pv)) - - bat_dict = {} - if data.data.bat_all_data.data.config.configured: - for bat in data.data.bat_data: - try: - bat_dict.update({bat: {"imported": data.data.bat_data[bat].data.get.imported, - "exported": data.data.bat_data[bat].data.get.exported, - "soc": data.data.bat_data[bat].data.get.soc}}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für Speicher "+str(bat)) - - sh_dict, sh_names = LegacySmartHomeLogData().update() - - new_entry = { - "timestamp": current_timestamp, - "date": date, - "cp": cp_dict, - "ev": ev_dict, - "counter": counter_dict, - "pv": pv_dict, - "bat": bat_dict, - "sh": sh_dict - } - - # json-Objekt in Datei einfügen - if folder == "daily": - (pathlib.Path(__file__).resolve().parents[2] / "data"/"daily_log").mkdir(mode=0o755, - parents=True, exist_ok=True) - filepath = str( - Path(__file__).resolve().parents[2] / "data" / "daily_log" / - (timecheck.create_timestamp_YYYYMMDD() + ".json")) - else: - (pathlib.Path(__file__).resolve().parents[2] / "data"/"monthly_log").mkdir(mode=0o755, - parents=True, exist_ok=True) - filepath = str( - Path(__file__).resolve().parents[2] / "data" / "monthly_log" / - (timecheck.create_timestamp_YYYYMM() + ".json")) - try: - with open(filepath, "r") as jsonFile: - content = json.load(jsonFile) - except FileNotFoundError: - with open(filepath, "w") as jsonFile: - json.dump({"entries": [], "totals": {}, "names": {}}, jsonFile) - with open(filepath, "r") as jsonFile: - content = json.load(jsonFile) - entries = content["entries"] - entries.append(new_entry) - content["totals"] = get_totals(entries) - content["names"] = get_names(content["totals"], sh_names) - with open(filepath, "w") as jsonFile: - json.dump(content, jsonFile) - return content["totals"] - - -def string_to_float(value: str, default: float = 0) -> float: - try: - return float(value) - except ValueError: - return default - - -def string_to_int(value: str, default: int = 0) -> int: - try: - return int(value) - except ValueError: - return default - - -def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: - # beim Jahres-Log werden die Summen aus den Monatssummen berechnet, bei allen anderen aus den absoluten Zählerwerten - totals: Dict[str, Dict] = {"cp": {}, "counter": {}, "pv": {}, "bat": {}, "sh": {}} - prev_entry: Dict = {} - for group in totals.keys(): - for entry in entries: - for module in entry[group]: - if not prev_entry or module not in totals[group]: - if sum_up_diffs: - totals[group][module] = entry[group][module] - else: - totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} - else: - for key, value in entry[group][module].items(): - if key != "soc" and "temp" not in key: - if value == "": - # Manchmal fehlen Werte im alten Log - value = 0 - if sum_up_diffs: - value = (Decimal(str(value)) - + Decimal(str(totals[group][module][key]))) - else: - try: - prev_value = prev_entry[group][module][key] - # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden die - # Werte zusammen addiert. - except KeyError: - prev_value = entry[group][module][key] - if prev_value == "": - # Manchmal fehlen Werte im alten Log - prev_value = 0 - # avoid floating point issues with using Decimal - value = (Decimal(str(value)) - - Decimal(str(prev_value)) - + Decimal(str(totals[group][module][key]))) - value = f'{value: f}' - # remove trailing zeros - totals[group][module][key] = string_to_float( - value) if "." in value else string_to_int(value) - prev_entry = entry - return totals - - -def get_names(totals: Dict, sh_names: Dict) -> Dict: - names = sh_names - for group in totals.items(): - if group[0] == "sh": - continue - for entry in group[1]: - try: - if "cp" in entry: - names.update({entry: data.data.cp_data[entry].data.config.name}) - elif "all" != entry: - id = entry.strip(string.ascii_letters) - names.update({entry: get_component_name_by_id(int(id))}) - except (ValueError, KeyError, AttributeError): - names.update({entry: entry}) - return names - - -def get_daily_log(date: str): - try: - with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(date+".json")), "r") as jsonFile: - log_data = json.load(jsonFile) - try: - next_date = timecheck.get_relative_date_string(date, day_offset=1) - with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(next_date+".json")), - "r") as nextJsonFile: - next_log_data = json.load(nextJsonFile) - log_data["entries"].append(next_log_data["entries"][0]) - except FileNotFoundError: - pass - return log_data - except FileNotFoundError: - pass - return [] - - -def get_monthly_log(date: str): - try: - with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(date+".json")), "r") as jsonFile: - log_data = json.load(jsonFile) - try: - next_date = timecheck.get_relative_date_string(date, month_offset=1) - with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(next_date+".json")), - "r") as nextJsonFile: - next_log_data = json.load(nextJsonFile) - log_data["entries"].append(next_log_data["entries"][0]) - except FileNotFoundError: - pass - return log_data - except FileNotFoundError: - pass - return [] - - -def get_yearly_log(year: str): - entries = [] - dates = [] - for month in range(1, 13): - dates.append(f"{year}{month:02}") - dates.append(f"{int(year)+1}01") - for date in dates: - try: - with open(Path(__file__).resolve().parents[2]/"data"/"monthly_log"/f"{date}.json", - "r") as jsonFile: - content = json.load(jsonFile) - content = content["totals"] - content.update({"date": date, "timestamp": timecheck.convert_YYYYMM_to_unix_timestamp(date)}) - entries.append(content) - except FileNotFoundError: - log.debug(f"Kein Log für Monat {date} gefunden.") - return {"entries": entries, "totals": get_totals(entries, sum_up_diffs=True)} - - -def update_daily_yields(totals): - """ veröffentlicht die Tageserträge für Ladepunkte, Zähler, PV und Speicher. - """ - [update_module_yields(type, totals) for type in ("bat", "counter", "cp", "pv")] - data.data.counter_all_data.calc_daily_yield_home_consumption() - - -def update_module_yields(module: str, totals: Dict) -> None: - def update_imported_exported(daily_imported: float, daily_exported: float) -> None: - module_data.data.get.daily_imported = daily_imported - module_data.data.get.daily_exported = daily_exported - if module == "cp": - topic = "chargepoint" - else: - topic = module - if isinstance(module_data, (Ev, Chargepoint, Pv, Bat, Counter)): - Pub().pub(f"openWB/set/{topic}/{module_data.num}/get/daily_imported", daily_imported) - Pub().pub(f"openWB/set/{topic}/{module_data.num}/get/daily_exported", daily_exported) - else: - Pub().pub(f"openWB/set/{topic}/get/daily_imported", daily_imported) - Pub().pub(f"openWB/set/{topic}/get/daily_exported", daily_exported) - - def update_exported(daily_exported: float) -> None: - module_data.data.get.daily_exported = daily_exported - if module in m: - Pub().pub(f"openWB/set/pv/{module_data.num}/get/daily_exported", daily_exported) - else: - Pub().pub("openWB/set/pv/get/daily_exported", daily_exported) - - for m in totals[module]: - if m in getattr(data.data, f"{module}_data"): - module_data = getattr(data.data, f"{module}_data")[m] - if module == "pv": - update_exported(totals[module][m]["exported"]) - else: - update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) - else: - log.info(f"Modul {m} wurde zwischenzeitlich gelöscht und wird daher nicht mehr aufgeführt.") - if module == "cp" and m == "all": - module_data = data.data.cp_all_data - update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) - - -class LegacySmartHomeLogData: - def __init__(self) -> None: - self.all_received_topics: Dict = {} - - def update(self) -> Tuple[Dict, Dict]: - sh_dict: Dict = {} - sh_names: Dict = {} - try: - InternalBrokerClient("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: - index = get_index(topic) - sh_dict.update({f"sh{index}": {}}) - for topic, payload in self.all_received_topics.items(): - if f"openWB/LegacySmartHome/Devices/{index}/Wh" == topic: - sh_dict[f"sh{index}"].update({"imported": decode_payload(payload), "exported": 0}) - for sensor_id in range(0, 3): - if f"openWB/LegacySmartHome/Devices/{index}/TemperatureSensor{sensor_id}" == topic: - sh_dict[f"sh{index}"].update({f"temp{sensor_id}": decode_payload(payload)}) - for topic, payload in self.all_received_topics.items(): - if f"openWB/LegacySmartHome/config/get/Devices/{index}/device_name" == topic: - sh_names.update({f"sh{index}": decode_payload(payload)}) - except Exception: - log.exception("Fehler im Werte-Logging-Modul für SmartHome") - finally: - return sh_dict, sh_names - - def on_connect(self, client: MqttClient, userdata, flags: dict, rc: int): - client.subscribe("openWB/LegacySmartHome/#", 2) - - def on_message(self, client: MqttClient, userdata, msg: MQTTMessage): - self.all_received_topics.update({msg.topic: msg.payload}) diff --git a/packages/helpermodules/measurement_log_test.py b/packages/helpermodules/measurement_log_test.py deleted file mode 100644 index 88e32f3d92..0000000000 --- a/packages/helpermodules/measurement_log_test.py +++ /dev/null @@ -1,146 +0,0 @@ -import threading -from unittest.mock import Mock -import pytest -from control.chargepoint import chargepoint - -from helpermodules import measurement_log -from control.chargepoint.chargepoint_all import AllChargepoints -from control import bat_all, counter, pv_all, pv -from control import data - - -@pytest.fixture(autouse=True) -def data_module() -> None: - data.data_init(threading.Event()) - data.data.bat_data.update({"all": bat_all.BatAll(), "bat2": bat_all.Bat(2)}) - data.data.counter_data.update({"counter0": counter.Counter(0)}) - data.data.cp_all_data = AllChargepoints() - data.data.cp_data.update({"cp4": chargepoint.Chargepoint( - 4, None), "cp5": chargepoint.Chargepoint(5, None), "cp6": chargepoint.Chargepoint(6, None)}) - data.data.pv_data.update({"all": pv_all.PvAll(), "pv1": pv.Pv(1)}) - - -def test_get_totals(monkeypatch): - # execution - totals = measurement_log.get_totals(SAMPLE) - - # evaluation - assert totals == TOTALS - - -def test_get_names(monkeypatch): - # setup - component_names_mock = Mock(side_effect=["Speicher", "Zähler", "Wechselrichter"]) - monkeypatch.setattr(measurement_log, "get_component_name_by_id", component_names_mock) - # execution - names = measurement_log.get_names(TOTALS, {"sh1": "Smarthome1"}) - - # evaluation - assert names == NAMES - - -def test_get_daily_yields(mock_pub): - # setup and execution - [measurement_log.update_module_yields(type, TOTALS) for type in ("bat", "counter", "cp", "pv")] - - # evaluation - for topic, value in EXPECTED.items(): - for call in mock_pub.mock_calls: - try: - if call.args[0] == topic: - assert value == call.args[1] - break - except IndexError: - pass - else: - pytest.fail(f"Topic {topic} is missing") - - -EXPECTED = { - "openWB/set/bat/get/daily_imported": 175.534, - "openWB/set/bat/get/daily_exported": 0, - "openWB/set/bat/2/get/daily_imported": 172.556, - "openWB/set/bat/2/get/daily_exported": 0, - "openWB/set/counter/0/get/daily_imported": 1.1, - "openWB/set/counter/0/get/daily_exported": 1.105, - "openWB/set/chargepoint/get/daily_imported": 105, - "openWB/set/chargepoint/get/daily_exported": 0, - "openWB/set/chargepoint/4/get/daily_imported": 85, - "openWB/set/chargepoint/4/get/daily_exported": 0, - "openWB/set/chargepoint/5/get/daily_imported": 0, - "openWB/set/chargepoint/5/get/daily_exported": 0, - "openWB/set/chargepoint/6/get/daily_imported": 2, - "openWB/set/chargepoint/6/get/daily_exported": 0, - "openWB/set/pv/get/daily_exported": 251, - "openWB/set/pv/1/get/daily_exported": 247} - -SAMPLE = [{'bat': {'all': {'exported': 0, 'imported': 58.774, 'soc': 51}, - 'bat2': {'exported': 0, 'imported': 61.752, 'soc': 51}}, - 'counter': {'counter0': {'exported': 3.816, 'imported': 0.284}}, - 'cp': {'all': {'exported': 0, 'imported': 15}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 5}, - 'cp5': {'exported': 0, 'imported': 0}}, - 'date': '13:41', - 'ev': {'ev0': {'soc': 0}}, - 'pv': {'all': {'exported': 88}, 'pv1': {'exported': 92}}, - "sh": {}, - 'timestamp': 1654861269}, - {'bat': {'all': {'exported': 0, 'imported': 146.108, 'soc': 53}, - 'bat2': {'exported': 0, 'imported': 149.099, 'soc': 53}}, - 'counter': {'counter0': {'exported': 4.317, 'imported': 0.772}}, - 'cp': {'all': {'exported': 0, 'imported': 100}, - 'cp3': {'exported': 0, 'imported': 20}, - 'cp4': {'exported': 0, 'imported': 80}, - 'cp5': {'exported': 0, 'imported': 0}}, - 'date': '13:46', - 'ev': {'ev0': {'soc': 4}}, - 'pv': {'all': {'exported': 214}, 'pv1': {'exported': 214}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 100, "exported": 0}}, - 'timestamp': 1654861569}, - {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, - 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, - 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, - 'cp': {'all': {'exported': 0, 'imported': 120}, - # remove existing module - 'cp4': {'exported': 0, 'imported': 90}, - 'cp5': {'exported': 0, 'imported': 0}, - # add new module later - 'cp6': {'exported': 0, 'imported': 64}}, - 'date': '13:51', - 'ev': {'ev0': {'soc': 6}}, - 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 200, "exported": 0}}, - 'timestamp': 1654861869}, - {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, - 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, - 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, - 'cp': {'all': {'exported': 0, 'imported': 120}, - 'cp4': {'exported': 0, 'imported': 90}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 66}}, - 'date': '13:51', - 'ev': {'ev0': {'soc': 6}}, - 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 400, "exported": 0}}, - 'timestamp': 1654862069}] - -TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, - 'bat2': {'exported': 0, 'imported': 172.556}}, - 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, - 'cp': {'all': {'exported': 0, 'imported': 105}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 85}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 2}}, - 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 247}}, - "sh": {"sh1": {"imported": 300, "exported": 0}}} - -NAMES = {'bat2': "Speicher", - 'counter0': "Zähler", - 'cp3': "cp3", - 'cp4': "Standard-Ladepunkt", - 'cp5': "Standard-Ladepunkt", - 'cp6': "Standard-Ladepunkt", - 'pv1': "Wechselrichter", - "sh1": "Smarthome1"} diff --git a/packages/helpermodules/measurement_logging/conftest.py b/packages/helpermodules/measurement_logging/conftest.py index c0861f1c93..4504537ffe 100644 --- a/packages/helpermodules/measurement_logging/conftest.py +++ b/packages/helpermodules/measurement_logging/conftest.py @@ -36,56 +36,46 @@ def data_module() -> None: "openWB/set/pv/get/daily_exported": 251, "openWB/set/pv/1/get/daily_exported": 247} -SAMPLE = [{'bat': {'all': {'exported': 0, 'imported': 58.774, 'soc': 51}, - 'bat2': {'exported': 0, 'imported': 61.752, 'soc': 51}}, - 'counter': {'counter0': {'exported': 3.816, 'imported': 0.284}}, - 'cp': {'all': {'exported': 0, 'imported': 15}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 5}, - 'cp5': {'exported': 0, 'imported': 0}}, - 'date': '13:41', - 'ev': {'ev0': {'soc': 0}}, - 'pv': {'all': {'exported': 88}, 'pv1': {'exported': 92}}, - "sh": {}, - 'timestamp': 1654861269}, - {'bat': {'all': {'exported': 0, 'imported': 146.108, 'soc': 53}, - 'bat2': {'exported': 0, 'imported': 149.099, 'soc': 53}}, - 'counter': {'counter0': {'exported': 4.317, 'imported': 0.772}}, - 'cp': {'all': {'exported': 0, 'imported': 100}, - 'cp3': {'exported': 0, 'imported': 20}, - 'cp4': {'exported': 0, 'imported': 80}, - 'cp5': {'exported': 0, 'imported': 0}}, - 'date': '13:46', - 'ev': {'ev0': {'soc': 4}}, - 'pv': {'all': {'exported': 214}, 'pv1': {'exported': 214}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 100, "exported": 0}}, - 'timestamp': 1654861569}, - {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, - 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, - 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, - 'cp': {'all': {'exported': 0, 'imported': 120}, - # remove existing module - 'cp4': {'exported': 0, 'imported': 90}, - 'cp5': {'exported': 0, 'imported': 0}, - # add new module later - 'cp6': {'exported': 0, 'imported': 64}}, - 'date': '13:51', - 'ev': {'ev0': {'soc': 6}}, - 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 200, "exported": 0}}, - 'timestamp': 1654861869}, - {'bat': {'all': {'exported': 0, 'imported': 234.308, 'soc': 55}, - 'bat2': {'exported': 0, 'imported': 234.308, 'soc': 55}}, - 'counter': {'counter0': {'exported': 4.921, 'imported': 1.384}}, - 'cp': {'all': {'exported': 0, 'imported': 120}, - 'cp4': {'exported': 0, 'imported': 90}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 66}}, - 'date': '13:51', - 'ev': {'ev0': {'soc': 6}}, - 'pv': {'all': {'exported': 339}, 'pv1': {'exported': 339}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 400, "exported": 0}}, - 'timestamp': 1654862069}] +SAMPLE = [{"timestamp": 1690529761, + "date": "09:35", + "cp": { + "cp3": {"imported": 3620.971, "exported": 0}, + "cp5": {"imported": 1208.646, "exported": 0}, + "cp4": {"imported": 1198.566, "exported": 0}, + "all": {"imported": 6028.183, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 4686.054, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 804}, "all": {"exported": 804}}, + "bat": {"bat2": {"imported": 2.42, "exported": 1742.135, "soc": 15}, + "all": {"imported": 2.42, "exported": 1742.135, "soc": 15}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.1, "exported": 0}}}, + {"timestamp": 1690530060, + "date": "09:40", + "cp": { + "cp3": {"imported": 4196.737, "exported": 0}, + "cp5": {"imported": 1400.574, "exported": 0}, + "cp4": {"imported": 1390.685, "exported": 0}, + "all": {"imported": 6987.995999999999, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 5432.177, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 930}, "all": {"exported": 930}}, + "bat": {"bat2": {"imported": 2.42, "exported": 2017.569, "soc": 10}, + "all": {"imported": 2.42, "exported": 2017.569, "soc": 10}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.2, "exported": 0}}}, + {"timestamp": 1690530360, + "date": "09:45", + "cp": { + "cp3": {"imported": 4772.491, "exported": 0}, + "cp5": {"imported": 1592.81, "exported": 0}, + "cp4": {"imported": 1582.508, "exported": 0}, + "all": {"imported": 7947.808999999999, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 6178.065, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 1055}, "all": {"exported": 1055}}, + "bat": {"bat2": {"imported": 2.42, "exported": 2292.992, "soc": 4}, + "all": {"imported": 2.42, "exported": 2292.992, "soc": 4}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.4, "exported": 0}}} + ] TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, 'bat2': {'exported': 0, 'imported': 172.556}}, diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index 23cb14efa2..f0ba9e629c 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -140,11 +140,11 @@ def get_daily_log(date: str): def _collect_daily_log_data(date: str): try: - with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(date+".json")), "r") as jsonFile: + with open(str(Path(__file__).resolve().parents[3] / "data"/"daily_log"/(date+".json")), "r") as jsonFile: log_data = json.load(jsonFile) try: next_date = timecheck.get_relative_date_string(date, day_offset=1) - with open(str(Path(__file__).resolve().parents[2] / "data"/"daily_log"/(next_date+".json")), + with open(str(Path(__file__).resolve().parents[3] / "data"/"daily_log"/(next_date+".json")), "r") as nextJsonFile: next_log_data = json.load(nextJsonFile) log_data["entries"].append(next_log_data["entries"][0]) @@ -164,11 +164,11 @@ def get_monthly_log(date: str): def _collect_monthly_log_data(date: str): try: - with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(date+".json")), "r") as jsonFile: + with open(str(Path(__file__).resolve().parents[3] / "data"/"monthly_log"/(date+".json")), "r") as jsonFile: log_data = json.load(jsonFile) try: next_date = timecheck.get_relative_date_string(date, month_offset=1) - with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(next_date+".json")), + with open(str(Path(__file__).resolve().parents[3] / "data"/"monthly_log"/(next_date+".json")), "r") as nextJsonFile: next_log_data = json.load(nextJsonFile) log_data["entries"].append(next_log_data["entries"][0]) @@ -194,7 +194,7 @@ def _collect_yearly_log_data(year: str): dates.append(f"{int(year)+1}01") for date in dates: try: - with open(Path(__file__).resolve().parents[2]/"data"/"monthly_log"/f"{date}.json", + with open(Path(__file__).resolve().parents[3]/"data"/"monthly_log"/f"{date}.json", "r") as jsonFile: content = json.load(jsonFile) content = content["totals"] @@ -202,7 +202,7 @@ def _collect_yearly_log_data(year: str): entries.append(content) try: next_date = timecheck.get_relative_date_string(date, month_offset=1) - with open(str(Path(__file__).resolve().parents[2] / "data"/"monthly_log"/(next_date+".json")), + with open(str(Path(__file__).resolve().parents[3] / "data"/"monthly_log"/(next_date+".json")), "r") as nextJsonFile: next_log_data = json.load(nextJsonFile) next_log_data = next_log_data["totals"] diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index a6203bc5f4..4ab8ee3d73 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -79,7 +79,8 @@ # }, # ... (dynamisch, je nach Anzahl konfigurierter Geräte) # } -# }] +# }], +# "names": "names": {"sh1": "", "cp1": "", "counter2": "", "pv3": ""} # } @@ -122,13 +123,15 @@ def save_log(folder): for counter in data.data.counter_data: try: if "counter" in counter: - counter_dict.update({counter: - {"imported": data.data.counter_data[counter].data.get.imported, - "exported": data.data.counter_data[counter].data.get.exported}}) + counter_dict.update( + {counter: { + "imported": data.data.counter_data[counter].data.get.imported, + "exported": data.data.counter_data[counter].data.get.exported, + "grid": True if data.data.counter_all_data.get_evu_counter_str() == counter else False}}) except Exception: log.exception("Fehler im Werte-Logging-Modul für Zähler "+str(counter)) - pv_dict = {} + pv_dict = {"all": {"exported": data.data.pv_all_data.data.get.exported}} if data.data.pv_all_data.data.config.configured: for pv in data.data.pv_data: try: @@ -137,7 +140,9 @@ def save_log(folder): except Exception: log.exception("Fehler im Werte-Logging-Modul für Wechselrichter "+str(pv)) - bat_dict = {} + bat_dict = {"all": {"imported": data.data.bat_all_data.data.get.imported, + "exported": data.data.bat_all_data.data.get.exported, + "soc": data.data.bat_all_data.data.get.soc}} if data.data.bat_all_data.data.config.configured: for bat in data.data.bat_data: try: @@ -162,28 +167,28 @@ def save_log(folder): # json-Objekt in Datei einfügen if folder == "daily": - (pathlib.Path(__file__).resolve().parents[2] / "data"/"daily_log").mkdir(mode=0o755, + (pathlib.Path(__file__).resolve().parents[3] / "data"/"daily_log").mkdir(mode=0o755, parents=True, exist_ok=True) filepath = str( - Path(__file__).resolve().parents[2] / "data" / "daily_log" / + Path(__file__).resolve().parents[3] / "data" / "daily_log" / (timecheck.create_timestamp_YYYYMMDD() + ".json")) else: - (pathlib.Path(__file__).resolve().parents[2] / "data"/"monthly_log").mkdir(mode=0o755, + (pathlib.Path(__file__).resolve().parents[3] / "data"/"monthly_log").mkdir(mode=0o755, parents=True, exist_ok=True) filepath = str( - Path(__file__).resolve().parents[2] / "data" / "monthly_log" / + Path(__file__).resolve().parents[3] / "data" / "monthly_log" / (timecheck.create_timestamp_YYYYMM() + ".json")) try: with open(filepath, "r") as jsonFile: content = json.load(jsonFile) except FileNotFoundError: with open(filepath, "w") as jsonFile: - json.dump({"entries": [], "totals": {}, "names": {}}, jsonFile) + json.dump({"entries": [], "names": {}}, jsonFile) with open(filepath, "r") as jsonFile: content = json.load(jsonFile) entries = content["entries"] entries.append(new_entry) - content["names"] = get_names(content["totals"], sh_names) + content["names"] = get_names(content["entries"][-1], sh_names) with open(filepath, "w") as jsonFile: json.dump(content, jsonFile) return content["entries"] diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 9c76bac464..0870286d10 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -12,9 +12,10 @@ from control.chargepoint.chargepoint_template import get_chargepoint_template_default from helpermodules.broker import InternalBrokerClient +from helpermodules.measurement_logging.process_log import get_totals +from helpermodules.measurement_logging.write_log import get_names from helpermodules.pub import Pub from helpermodules.utils.topic_parser import decode_payload, get_index, get_second_index -from helpermodules import measurement_log from control import counter_all from control import ev from modules.common.configurable_vehicle import IntervalConfig @@ -535,7 +536,7 @@ def upgrade_datastore_0(self) -> None: content = json.load(jsonFile) if isinstance(content, List): try: - new_content = {"entries": content, "totals": measurement_log.get_totals(content)} + new_content = {"entries": content, "totals": get_totals(content)} jsonFile.seek(0) json.dump(new_content, jsonFile) jsonFile.truncate() @@ -774,7 +775,7 @@ def upgrade_datastore_15(self) -> None: for e in content["entries"]: e.update({"sh": {}}) content["totals"].update({"sh": {}}) - content["names"] = measurement_log.get_names(content["totals"], {}) + content["names"] = get_names(content["totals"], {}) jsonFile.seek(0) json.dump(content, jsonFile) jsonFile.truncate() diff --git a/packages/main.py b/packages/main.py index 9c3d6f6904..6dd192e8c6 100755 --- a/packages/main.py +++ b/packages/main.py @@ -9,6 +9,8 @@ import threading import traceback from threading import Thread +from helpermodules.measurement_logging.update_daily_yields import update_daily_yields +from helpermodules.measurement_logging.write_log import save_log from helpermodules.pub import Pub from modules import loadvars @@ -16,7 +18,6 @@ from helpermodules import timecheck, update_config from helpermodules import subdata from helpermodules import setdata -from helpermodules import measurement_log from helpermodules import logger from helpermodules import command from control import prepare @@ -76,7 +77,8 @@ def handler5MinAlgorithm(self): ausführt, die nur alle 5 Minuten ausgeführt werden müssen. """ try: - measurement_log.measurement_log_daily() + totals = save_log("daily") + update_daily_yields(totals) data.data.general_data.grid_protection() data.data.optional_data.et_get_prices() data.data.counter_all_data.validate_hierarchy() From bec9eda001c6b2775122436cc80e0eaf468b189a Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 28 Jul 2023 14:01:42 +0200 Subject: [PATCH 071/121] diagramm data --- .../measurement_logging/conftest.py | 161 ++++++++---------- .../measurement_logging/process_log.py | 153 ++++++++++------- .../measurement_logging/process_log_test.py | 43 ++++- .../update_daily_yields_test.py | 24 ++- .../measurement_logging/write_log.py | 2 +- .../measurement_logging/write_log_test.py | 14 +- packages/main.py | 2 +- 7 files changed, 231 insertions(+), 168 deletions(-) diff --git a/packages/helpermodules/measurement_logging/conftest.py b/packages/helpermodules/measurement_logging/conftest.py index 4504537ffe..1dec4553f6 100644 --- a/packages/helpermodules/measurement_logging/conftest.py +++ b/packages/helpermodules/measurement_logging/conftest.py @@ -18,93 +18,82 @@ def data_module() -> None: data.data.pv_data.update({"all": pv_all.PvAll(), "pv1": pv.Pv(1)}) -EXPECTED = { - "openWB/set/bat/get/daily_imported": 175.534, - "openWB/set/bat/get/daily_exported": 0, - "openWB/set/bat/2/get/daily_imported": 172.556, - "openWB/set/bat/2/get/daily_exported": 0, - "openWB/set/counter/0/get/daily_imported": 1.1, - "openWB/set/counter/0/get/daily_exported": 1.105, - "openWB/set/chargepoint/get/daily_imported": 105, - "openWB/set/chargepoint/get/daily_exported": 0, - "openWB/set/chargepoint/4/get/daily_imported": 85, - "openWB/set/chargepoint/4/get/daily_exported": 0, - "openWB/set/chargepoint/5/get/daily_imported": 0, - "openWB/set/chargepoint/5/get/daily_exported": 0, - "openWB/set/chargepoint/6/get/daily_imported": 2, - "openWB/set/chargepoint/6/get/daily_exported": 0, - "openWB/set/pv/get/daily_exported": 251, - "openWB/set/pv/1/get/daily_exported": 247} +@pytest.fixture() +def daily_log_sample(): + return [{"timestamp": 1690529761, + "date": "09:35", + "cp": { + "cp3": {"imported": 3620.971, "exported": 0}, + "cp5": {"imported": 1208.646, "exported": 0}, + "cp4": {"imported": 1198.566, "exported": 0}, + "all": {"imported": 6028.183, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 4686.054, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 804}, "all": {"exported": 804}}, + "bat": {"bat2": {"imported": 2.42, "exported": 1742.135, "soc": 15}, + "all": {"imported": 2.42, "exported": 1742.135, "soc": 15}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.1, "exported": 0}}}, + {"timestamp": 1690530060, + "date": "09:40", + "cp": { + "cp3": {"imported": 4196.737, "exported": 0}, + "cp5": {"imported": 1400.574, "exported": 0}, + "cp4": {"imported": 1390.685, "exported": 0}, + "all": {"imported": 6987.995999999999, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 5432.177, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 930}, "all": {"exported": 930}}, + "bat": {"bat2": {"imported": 2.42, "exported": 2017.569, "soc": 10}, + "all": {"imported": 2.42, "exported": 2017.569, "soc": 10}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.2, "exported": 0}}}, + {"timestamp": 1690530360, + "date": "09:45", + "cp": { + "cp3": {"imported": 4772.491, "exported": 0}, + "cp6": {"imported": 1592.81, "exported": 0}, + "cp4": {"imported": 1582.508, "exported": 0}, + "all": {"imported": 7947.808999999999, "exported": 0}}, + "ev": {"ev0": {"soc": 0}}, + "counter": {"counter0": {"imported": 6178.065, "exported": 2.396, "grid": True}}, + "pv": {"pv1": {"exported": 1055}, "all": {"exported": 1055}}, + "bat": {"bat2": {"imported": 2.42, "exported": 2292.992, "soc": 4}, + "all": {"imported": 2.42, "exported": 2292.992, "soc": 4}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.4, "exported": 0}}} + ] -SAMPLE = [{"timestamp": 1690529761, - "date": "09:35", - "cp": { - "cp3": {"imported": 3620.971, "exported": 0}, - "cp5": {"imported": 1208.646, "exported": 0}, - "cp4": {"imported": 1198.566, "exported": 0}, - "all": {"imported": 6028.183, "exported": 0}}, - "ev": {"ev0": {"soc": 0}}, - "counter": {"counter0": {"imported": 4686.054, "exported": 2.396, "grid": True}}, - "pv": {"pv1": {"exported": 804}, "all": {"exported": 804}}, - "bat": {"bat2": {"imported": 2.42, "exported": 1742.135, "soc": 15}, - "all": {"imported": 2.42, "exported": 1742.135, "soc": 15}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.1, "exported": 0}}}, - {"timestamp": 1690530060, - "date": "09:40", - "cp": { - "cp3": {"imported": 4196.737, "exported": 0}, - "cp5": {"imported": 1400.574, "exported": 0}, - "cp4": {"imported": 1390.685, "exported": 0}, - "all": {"imported": 6987.995999999999, "exported": 0}}, - "ev": {"ev0": {"soc": 0}}, - "counter": {"counter0": {"imported": 5432.177, "exported": 2.396, "grid": True}}, - "pv": {"pv1": {"exported": 930}, "all": {"exported": 930}}, - "bat": {"bat2": {"imported": 2.42, "exported": 2017.569, "soc": 10}, - "all": {"imported": 2.42, "exported": 2017.569, "soc": 10}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.2, "exported": 0}}}, - {"timestamp": 1690530360, - "date": "09:45", - "cp": { - "cp3": {"imported": 4772.491, "exported": 0}, - "cp5": {"imported": 1592.81, "exported": 0}, - "cp4": {"imported": 1582.508, "exported": 0}, - "all": {"imported": 7947.808999999999, "exported": 0}}, - "ev": {"ev0": {"soc": 0}}, - "counter": {"counter0": {"imported": 6178.065, "exported": 2.396, "grid": True}}, - "pv": {"pv1": {"exported": 1055}, "all": {"exported": 1055}}, - "bat": {"bat2": {"imported": 2.42, "exported": 2292.992, "soc": 4}, - "all": {"imported": 2.42, "exported": 2292.992, "soc": 4}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.4, "exported": 0}}} - ] -TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, - 'bat2': {'exported': 0, 'imported': 172.556}}, - 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, - 'cp': {'all': {'exported': 0, 'imported': 105}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 85}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 2}}, - 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 247}}, - "sh": {"sh1": {"imported": 300, "exported": 0}}} +@pytest.fixture() +def daily_log_totals(): + return {'bat': {'all': {'exported': 550.857, 'imported': 0.0}, + 'bat2': {'exported': 550.857, 'imported': 0.0}}, + 'counter': {'counter0': {'exported': 0.0, 'imported': 1492.011}}, + 'cp': {'all': {'exported': 0, 'imported': 1919.625999999999}, + 'cp3': {'exported': 0, 'imported': 1151.52}, + 'cp4': {'exported': 0, 'imported': 383.942}, + 'cp5': {'exported': 0, 'imported': 191.928}, + 'cp6': {'exported': 0, 'imported': 0}}, + 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 251}}, + "sh": {"sh1": {"imported": 0.3, "exported": 0}}} -NAMES = {'bat2': "Speicher", - 'counter0': "Zähler", - 'cp3': "cp3", - 'cp4': "Standard-Ladepunkt", - 'cp5': "Standard-Ladepunkt", - 'cp6': "Standard-Ladepunkt", - 'pv1': "Wechselrichter", - "sh1": "Smarthome1"} -POWER_SOURCE_TOTALS = {'bat': {'all': {'exported': 0, 'imported': 175.534}, - 'bat2': {'exported': 0, 'imported': 172.556}}, - 'counter': {'counter0': {'exported': 1.105, 'imported': 1.1}}, - 'cp': {'all': {'exported': 0, 'imported': 105}, - 'cp3': {'exported': 0, 'imported': 10}, - 'cp4': {'exported': 0, 'imported': 85}, - 'cp5': {'exported': 0, 'imported': 0}, - 'cp6': {'exported': 0, 'imported': 2}}, - 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 247}}, - "sh": {"sh1": {"imported": 300, "exported": 0}}, - "power_source": {"grid": 1.46, "pv": 0, "bat": 0, "cp": 0}} +@pytest.fixture() +def daily_log_entry_kw(): + return {'bat': {'all': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}, + 'bat2': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}}, + 'counter': {'counter0': {'exported': 0.0, + 'grid': True, + 'imported': 8.983420735785948}}, + 'cp': {'all': {'exported': 0.0, 'imported': 11.556276923076913}, + 'cp3': {'exported': 0.0, 'imported': 6.932299665551841}, + 'cp4': {'exported': 0.0, 'imported': 2.3131384615384603}, + 'cp5': {'exported': 0.0, 'imported': 2.3108387959866237}}, + 'date': '09:35', + 'ev': {'ev0': {'soc': 0}}, + 'pv': {'all': {'exported': 1.517056856187291}, + 'pv1': {'exported': 1.517056856187291}}, + 'sh': {'sh1': {'exported': 0.0, + 'imported': 0.0012040133779264216, + 'temp0': 300, + 'temp1': 300, + 'temp2': 300}}, + 'timestamp': 1690529761} diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index f0ba9e629c..1dc6cee0cc 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -31,38 +31,41 @@ def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: for group in totals.keys(): for entry in entries: for module in entry[group]: - if not prev_entry or module not in totals[group]: - if sum_up_diffs: - totals[group][module] = entry[group][module] + try: + if not prev_entry or module not in totals[group]: + if sum_up_diffs: + totals[group][module] = entry[group][module] + else: + totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} else: - totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} - else: - for key, value in entry[group][module].items(): - if key != "soc" and "temp" not in key: - if value == "": - # Manchmal fehlen Werte im alten Log - value = 0 - if sum_up_diffs: - value = (Decimal(str(value)) - + Decimal(str(totals[group][module][key]))) - else: - try: - prev_value = prev_entry[group][module][key] - # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden die - # Werte zusammen addiert. - except KeyError: - prev_value = entry[group][module][key] - if prev_value == "": + for key, value in entry[group][module].items(): + if key != "soc" and key != "grid" and "temp" not in key: + if value == "": # Manchmal fehlen Werte im alten Log - prev_value = 0 - # avoid floating point issues with using Decimal - value = (Decimal(str(value)) - - Decimal(str(prev_value)) - + Decimal(str(totals[group][module][key]))) - value = f'{value: f}' - # remove trailing zeros - totals[group][module][key] = string_to_float( - value) if "." in value else string_to_int(value) + value = 0 + if sum_up_diffs: + value = (Decimal(str(value)) + + Decimal(str(totals[group][module][key]))) + else: + try: + prev_value = prev_entry[group][module][key] + # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden die + # Werte zusammen addiert. + except KeyError: + prev_value = entry[group][module][key] + if prev_value == "": + # Manchmal fehlen Werte im alten Log + prev_value = 0 + # avoid floating point issues with using Decimal + value = (Decimal(str(value)) + - Decimal(str(prev_value)) + + Decimal(str(totals[group][module][key]))) + value = f'{value: f}' + # remove trailing zeros + totals[group][module][key] = string_to_float( + value) if "." in value else string_to_int(value) + except Exception: + log.exception(f"Fehler beim Berechnen der Summe von {module}") prev_entry = entry return totals @@ -133,8 +136,8 @@ def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: def get_daily_log(date: str): data = _collect_daily_log_data(date) - data = _analyse_power_source(data) data = _convert_data_to_kW(data) + data = _analyse_power_source(data) return data @@ -150,7 +153,8 @@ def _collect_daily_log_data(date: str): log_data["entries"].append(next_log_data["entries"][0]) except FileNotFoundError: pass - return {"entries": log_data, "totals": get_totals(log_data)} + log_data["totals"] = get_totals(log_data["entries"]) + return log_data except FileNotFoundError: pass return [] @@ -174,7 +178,8 @@ def _collect_monthly_log_data(date: str): log_data["entries"].append(next_log_data["entries"][0]) except FileNotFoundError: pass - return {"entries": log_data, "totals": get_totals(log_data)} + log_data["totals"] = get_totals(log_data["entries"]) + return log_data except FileNotFoundError: pass return [] @@ -213,51 +218,71 @@ def _collect_yearly_log_data(year: str): pass except FileNotFoundError: log.debug(f"Kein Log für Monat {date} gefunden.") + except Exception: + log.exception(f"Fehler beim Zusammenstellen der Jahresdaten für Monat {date}") return {"entries": entries, "totals": get_totals(entries, sum_up_diffs=True)} -def _analyse_power_source(data): - for entry in data["entries"]: - entry = _analyse_percentage(entry) - _analyse_percentage(data["totals"]) +def _analyse_power_source(data) -> Dict: + if data: + for i in range(0, len(data["entries"])): + data["entries"][i] = _analyse_percentage(data["entries"][i]) + data["totals"] = _analyse_percentage(data["totals"]) + return data def _analyse_percentage(entry): def format(value): - return round(value/100, 2) - bat_imported = entry["bat"]["all"]["imported"] - bat_exported = entry["bat"]["all"]["exported"] - cp_exported = entry["cp"]["all"]["exported"] - pv = entry["pv"]["all"]["exported"] - for counter in entry["counter"]: - if counter.get("grid") is None: - return - if counter["grid"]: - grid_imported = counter["imported"] - grid_exported = counter["exported"] - consumption = grid_imported - grid_exported + pv + bat_exported - bat_imported + cp_exported - entry["power_source"] = {"grid": format(grid_imported / consumption), - "pv": format((pv - grid_exported - bat_imported) / consumption), - "bat": format(bat_exported/consumption), - "cp": format(cp_exported/consumption)} - return entry + return round(value*100, 2) + try: + bat_imported = entry["bat"]["all"]["imported"] + bat_exported = entry["bat"]["all"]["exported"] + cp_exported = entry["cp"]["all"]["exported"] + pv = entry["pv"]["all"]["exported"] + for counter in entry["counter"].values(): + if counter.get("grid") is None: + return + if counter["grid"]: + grid_imported = counter["imported"] + grid_exported = counter["exported"] + consumption = grid_imported - grid_exported + pv + bat_exported - bat_imported + cp_exported + try: + entry["power_source"] = {"grid": format(grid_imported / consumption), + "pv": format((pv - grid_exported - bat_imported) / consumption), + "bat": format(bat_exported/consumption), + "cp": format(cp_exported/consumption)} + except ZeroDivisionError: + entry["power_source"] = {"power_source": {"grid": 0, "pv": 0, "bat": 0, "cp": 0}} + except Exception: + log.exception(f"Fehler beim Berechenen des Strom-Mix von {entry['timestamp']}") + finally: + return entry def _convert_data_to_kW(data): - for i in range(0, len(data["entries"])-1): - entry = data["entries"][0] - next_entry = data["entries"][1] - entry = _convert(entry, next_entry) + if data: + for i in range(0, len(data["entries"])-1): + entry = data["entries"][i] + next_entry = data["entries"][i+1] + data["entries"][i] = _convert(entry, next_entry) + return data def _convert(entry, next_entry): - time_diff = entry["timestamp"] - next_entry["timestamp"] + time_diff = next_entry["timestamp"] - entry["timestamp"] for type in ("bat", "counter", "cp", "pv", "sh"): - for key in entry[type].keys(): - if key == "imported" or key == "exported": - value = entry[type][key] - next_value = next_entry[type][key] - entry[type][key] = _convert_value_to_kW(value, next_value, time_diff) + for module in entry[type].keys(): + try: + for key in entry[type][module]: + try: + if key == "imported" or key == "exported": + value = entry[type][module][key] + next_value = next_entry[type][module][key] + entry[type][module][key] = _convert_value_to_kW(value, next_value, time_diff) + except Exception: + log.exception("Fehler beim Berechnen der Leistung") + except Exception: + log.exception("Fehler beim Berechnen der Leistung") return entry diff --git a/packages/helpermodules/measurement_logging/process_log_test.py b/packages/helpermodules/measurement_logging/process_log_test.py index 7663c41efd..8bb85b931d 100644 --- a/packages/helpermodules/measurement_logging/process_log_test.py +++ b/packages/helpermodules/measurement_logging/process_log_test.py @@ -1,21 +1,40 @@ -from helpermodules.measurement_logging.conftest import POWER_SOURCE_TOTALS, SAMPLE, TOTALS -from helpermodules.measurement_logging.process_log import _analyse_percentage, _convert_value_to_kW, get_totals +from helpermodules.measurement_logging.process_log import (_analyse_percentage, _convert, _convert_value_to_kW, + get_totals) -def test_get_totals(): +def test_get_totals(daily_log_sample, daily_log_totals): # setup and execution - totals = get_totals(SAMPLE) + totals = get_totals(daily_log_sample) # evaluation - assert totals == TOTALS + assert totals == daily_log_totals -def test_analyse_percentage(): +def test_analyse_percentage(daily_log_entry_kw): # setup and execution - entry = _analyse_percentage(TOTALS) + entry = _analyse_percentage(daily_log_entry_kw) # evaluation - assert entry == POWER_SOURCE_TOTALS + assert entry == {'bat': {'all': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}, + 'bat2': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}}, + 'counter': {'counter0': {'exported': 0.0, + 'grid': True, + 'imported': 8.983420735785948}}, + 'cp': {'all': {'exported': 0.0, 'imported': 11.556276923076913}, + 'cp3': {'exported': 0.0, 'imported': 6.932299665551841}, + 'cp4': {'exported': 0.0, 'imported': 2.3131384615384603}, + 'cp5': {'exported': 0.0, 'imported': 2.3108387959866237}}, + 'date': '09:35', + 'ev': {'ev0': {'soc': 0}}, + 'pv': {'all': {'exported': 1.517056856187291}, + 'pv1': {'exported': 1.517056856187291}}, + 'sh': {'sh1': {'exported': 0.0, + 'imported': 0.0012040133779264216, + 'temp0': 300, + 'temp1': 300, + 'temp2': 300}}, + 'timestamp': 1690529761, + "power_source": {"grid": 65.02, "pv": 10.98, "bat": 24.0, "cp": 0.0}} def test_convert_value_to_kW(): @@ -24,3 +43,11 @@ def test_convert_value_to_kW(): # evaluation assert power == 1.8 + + +def test_convert(daily_log_entry_kw, daily_log_sample): + # setup and execution + entry = _convert(daily_log_sample[0], daily_log_sample[1]) + + # evaluation + assert entry == daily_log_entry_kw diff --git a/packages/helpermodules/measurement_logging/update_daily_yields_test.py b/packages/helpermodules/measurement_logging/update_daily_yields_test.py index 27ab364df6..0e244b42f2 100644 --- a/packages/helpermodules/measurement_logging/update_daily_yields_test.py +++ b/packages/helpermodules/measurement_logging/update_daily_yields_test.py @@ -1,15 +1,31 @@ import pytest -from helpermodules.measurement_logging.conftest import EXPECTED, TOTALS from helpermodules.measurement_logging.update_daily_yields import update_module_yields -def test_update_module_yields(mock_pub): +def test_update_module_yields(daily_log_totals, mock_pub): # setup and execution - [update_module_yields(type, TOTALS) for type in ("bat", "counter", "cp", "pv")] + [update_module_yields(type, daily_log_totals) for type in ("bat", "counter", "cp", "pv")] # evaluation - for topic, value in EXPECTED.items(): + expected = { + "openWB/set/bat/get/daily_imported": 0, + "openWB/set/bat/get/daily_exported": 550.857, + "openWB/set/bat/2/get/daily_imported": 0, + "openWB/set/bat/2/get/daily_exported": 550.857, + "openWB/set/counter/0/get/daily_imported": 1492.011, + "openWB/set/counter/0/get/daily_exported": 0, + "openWB/set/chargepoint/get/daily_imported": 1919.625999999999, + "openWB/set/chargepoint/get/daily_exported": 0, + "openWB/set/chargepoint/4/get/daily_imported": 383.942, + "openWB/set/chargepoint/4/get/daily_exported": 0, + "openWB/set/chargepoint/5/get/daily_imported": 191.928, + "openWB/set/chargepoint/5/get/daily_exported": 0, + "openWB/set/chargepoint/6/get/daily_imported": 0, + "openWB/set/chargepoint/6/get/daily_exported": 0, + "openWB/set/pv/get/daily_exported": 251, + "openWB/set/pv/1/get/daily_exported": 251} + for topic, value in expected.items(): for call in mock_pub.mock_calls: try: if call.args[0] == topic: diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index 4ab8ee3d73..b8255452c2 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -197,7 +197,7 @@ def save_log(folder): def get_names(totals: Dict, sh_names: Dict) -> Dict: names = sh_names for group in totals.items(): - if group[0] == "sh": + if group[0] not in ("bat", "counter", "cp", "pv"): continue for entry in group[1]: try: diff --git a/packages/helpermodules/measurement_logging/write_log_test.py b/packages/helpermodules/measurement_logging/write_log_test.py index 5852feb5cc..ef12e6b6aa 100644 --- a/packages/helpermodules/measurement_logging/write_log_test.py +++ b/packages/helpermodules/measurement_logging/write_log_test.py @@ -1,16 +1,22 @@ from unittest.mock import Mock from helpermodules.measurement_logging import write_log -from helpermodules.measurement_logging.conftest import NAMES, TOTALS from helpermodules.measurement_logging.write_log import get_names -def test_get_names(monkeypatch): +def test_get_names(daily_log_totals, monkeypatch): # setup component_names_mock = Mock(side_effect=["Speicher", "Zähler", "Wechselrichter"]) monkeypatch.setattr(write_log, "get_component_name_by_id", component_names_mock) # execution - names = get_names(TOTALS, {"sh1": "Smarthome1"}) + names = get_names(daily_log_totals, {"sh1": "Smarthome1"}) # evaluation - assert names == NAMES + assert names == {'bat2': "Speicher", + 'counter0': "Zähler", + 'cp3': "cp3", + 'cp4': "Standard-Ladepunkt", + 'cp5': "Standard-Ladepunkt", + 'cp6': "Standard-Ladepunkt", + 'pv1': "Wechselrichter", + "sh1": "Smarthome1"} diff --git a/packages/main.py b/packages/main.py index 6dd192e8c6..d3c0c5df1a 100755 --- a/packages/main.py +++ b/packages/main.py @@ -124,7 +124,7 @@ def handler5Min(self): @exit_after(10) def handler_midnight(self): try: - measurement_log.save_log("monthly") + save_log("monthly") except KeyboardInterrupt: log.critical("Ausführung durch exit_after gestoppt: "+traceback.format_exc()) except Exception: From c2df7e42e7f141dd0f232832e1b549b82e1e53b6 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 28 Jul 2023 14:10:48 +0200 Subject: [PATCH 072/121] flake8 --- packages/helpermodules/measurement_logging/process_log.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index 1dc6cee0cc..5a8c585d48 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -49,8 +49,8 @@ def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: else: try: prev_value = prev_entry[group][module][key] - # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden die - # Werte zusammen addiert. + # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden + # die Werte zusammen addiert. except KeyError: prev_value = entry[group][module][key] if prev_value == "": From b976e1c4b7f89ac6fe6ac87a91ed55a711650367 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 14 Aug 2023 09:41:04 +0200 Subject: [PATCH 073/121] rewrite chart data calculation --- .../measurement_logging/process_log.py | 157 ++++++++++-------- 1 file changed, 85 insertions(+), 72 deletions(-) diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index 5a8c585d48..60f062b070 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -1,4 +1,5 @@ from decimal import Decimal +from enum import Enum import json import logging from pathlib import Path @@ -9,6 +10,12 @@ log = logging.getLogger(__name__) +class CalculationType(Enum): + ALL = 0 + POWER = 1 + ENERGY = 2 + + def string_to_float(value: str, default: float = 0) -> float: try: return float(value) @@ -23,9 +30,7 @@ def string_to_int(value: str, default: int = 0) -> int: return default -def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: - # beim Jahres-Log werden die Summen aus den Monatssummen berechnet (sum_up_diffs=True), - # bei allen anderen aus den absoluten Zählerwerten +def get_totals(entries: List) -> Dict: totals: Dict[str, Dict] = {"cp": {}, "counter": {}, "pv": {}, "bat": {}, "sh": {}} prev_entry: Dict = {} for group in totals.keys(): @@ -33,33 +38,26 @@ def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: for module in entry[group]: try: if not prev_entry or module not in totals[group]: - if sum_up_diffs: - totals[group][module] = entry[group][module] - else: - totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} + totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} else: for key, value in entry[group][module].items(): if key != "soc" and key != "grid" and "temp" not in key: if value == "": # Manchmal fehlen Werte im alten Log value = 0 - if sum_up_diffs: - value = (Decimal(str(value)) - + Decimal(str(totals[group][module][key]))) - else: - try: - prev_value = prev_entry[group][module][key] - # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden - # die Werte zusammen addiert. - except KeyError: - prev_value = entry[group][module][key] - if prev_value == "": - # Manchmal fehlen Werte im alten Log - prev_value = 0 - # avoid floating point issues with using Decimal - value = (Decimal(str(value)) - - Decimal(str(prev_value)) - + Decimal(str(totals[group][module][key]))) + try: + prev_value = prev_entry[group][module][key] + # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden + # die Werte zusammen addiert. + except KeyError: + prev_value = entry[group][module][key] + if prev_value == "": + # Manchmal fehlen Werte im alten Log + prev_value = 0 + # avoid floating point issues with using Decimal + value = (Decimal(str(value)) + - Decimal(str(prev_value)) + + Decimal(str(totals[group][module][key]))) value = f'{value: f}' # remove trailing zeros totals[group][module][key] = string_to_float( @@ -136,32 +134,32 @@ def get_totals(entries: List, sum_up_diffs: bool = False) -> Dict: def get_daily_log(date: str): data = _collect_daily_log_data(date) - data = _convert_data_to_kW(data) - data = _analyse_power_source(data) + data = _process_entries(data, CalculationType.POWER) + # data = _analyse_power_source(data) return data def _collect_daily_log_data(date: str): try: - with open(str(Path(__file__).resolve().parents[3] / "data"/"daily_log"/(date+".json")), "r") as jsonFile: - log_data = json.load(jsonFile) + with open(str(Path(__file__).resolve().parents[3] / "data"/"daily_log"/(date+".json")), "r") as json_file: + log_data = json.load(json_file) try: next_date = timecheck.get_relative_date_string(date, day_offset=1) with open(str(Path(__file__).resolve().parents[3] / "data"/"daily_log"/(next_date+".json")), - "r") as nextJsonFile: - next_log_data = json.load(nextJsonFile) + "r") as next_json_file: + next_log_data = json.load(next_json_file) log_data["entries"].append(next_log_data["entries"][0]) except FileNotFoundError: pass log_data["totals"] = get_totals(log_data["entries"]) - return log_data except FileNotFoundError: - pass - return [] + log_data = {"entries": [], "totals": {}, "names": {}} + return log_data def get_monthly_log(date: str): data = _collect_monthly_log_data(date) + data = _process_entries(data, CalculationType.ENERGY) data = _analyse_power_source(data) return data @@ -179,20 +177,21 @@ def _collect_monthly_log_data(date: str): except FileNotFoundError: pass log_data["totals"] = get_totals(log_data["entries"]) - return log_data except FileNotFoundError: - pass - return [] + log_data = {"entries": [], "totals": {}, "names": {}} + return log_data def get_yearly_log(year: str): data = _collect_yearly_log_data(year) + data = _process_entries(data, CalculationType.ENERGY) data = _analyse_power_source(data) return data def _collect_yearly_log_data(year: str): entries = [] + names = {} dates = [] for month in range(1, 13): dates.append(f"{year}{month:02}") @@ -202,30 +201,24 @@ def _collect_yearly_log_data(year: str): with open(Path(__file__).resolve().parents[3]/"data"/"monthly_log"/f"{date}.json", "r") as jsonFile: content = json.load(jsonFile) - content = content["totals"] - content.update({"date": date, "timestamp": timecheck.convert_YYYYMM_to_unix_timestamp(date)}) - entries.append(content) - try: - next_date = timecheck.get_relative_date_string(date, month_offset=1) - with open(str(Path(__file__).resolve().parents[3] / "data"/"monthly_log"/(next_date+".json")), - "r") as nextJsonFile: - next_log_data = json.load(nextJsonFile) - next_log_data = next_log_data["totals"] - next_log_data.update( - {"date": date, "timestamp": timecheck.convert_YYYYMM_to_unix_timestamp(date)}) - entries.append(content) - except FileNotFoundError: - pass + entries.append(content["entries"][0]) + next_date = timecheck.get_relative_date_string(date, month_offset=1) + # add last entry of current file if next file is missing + if not (Path(__file__).resolve().parents[3] / "data"/"monthly_log"/(next_date+".json")).is_file(): + entries.append(content["entries"][-1]) + log.debug(f"Keine Logdatei für Monat {next_date} gefunden, " + f"füge letzten Datensatz von {date} ein: {entries[-1]['date']}") + names.update(content["names"]) except FileNotFoundError: log.debug(f"Kein Log für Monat {date} gefunden.") except Exception: log.exception(f"Fehler beim Zusammenstellen der Jahresdaten für Monat {date}") - return {"entries": entries, "totals": get_totals(entries, sum_up_diffs=True)} + return {"entries": entries, "totals": get_totals(entries), "names": names} def _analyse_power_source(data) -> Dict: if data: - for i in range(0, len(data["entries"])): + for i in range(0, len(data["entries"])-1): data["entries"][i] = _analyse_percentage(data["entries"][i]) data["totals"] = _analyse_percentage(data["totals"]) return data @@ -235,16 +228,16 @@ def _analyse_percentage(entry): def format(value): return round(value*100, 2) try: - bat_imported = entry["bat"]["all"]["imported"] - bat_exported = entry["bat"]["all"]["exported"] - cp_exported = entry["cp"]["all"]["exported"] - pv = entry["pv"]["all"]["exported"] + bat_imported = entry["bat"]["all"]["energy_imported"] if "all" in entry["bat"].keys() else 0 + bat_exported = entry["bat"]["all"]["energy_exported"] if "all" in entry["bat"].keys() else 0 + cp_exported = entry["cp"]["all"]["energy_exported"] if "all" in entry["cp"].keys() else 0 + pv = entry["pv"]["all"]["energy_exported"] if "all" in entry["pv"].keys() else 0 for counter in entry["counter"].values(): if counter.get("grid") is None: return if counter["grid"]: - grid_imported = counter["imported"] - grid_exported = counter["exported"] + grid_imported = counter["energy_imported"] + grid_exported = counter["energy_exported"] consumption = grid_imported - grid_exported + pv + bat_exported - bat_imported + cp_exported try: entry["power_source"] = {"grid": format(grid_imported / consumption), @@ -254,40 +247,60 @@ def format(value): except ZeroDivisionError: entry["power_source"] = {"power_source": {"grid": 0, "pv": 0, "bat": 0, "cp": 0}} except Exception: - log.exception(f"Fehler beim Berechenen des Strom-Mix von {entry['timestamp']}") + log.exception(f"Fehler beim Berechnen des Strom-Mix von {entry['timestamp']}") finally: return entry -def _convert_data_to_kW(data): +def _process_entries(data, calculation): if data: for i in range(0, len(data["entries"])-1): entry = data["entries"][i] next_entry = data["entries"][i+1] - data["entries"][i] = _convert(entry, next_entry) + data["entries"][i] = _process_entry(entry, next_entry, calculation) return data -def _convert(entry, next_entry): +def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): time_diff = next_entry["timestamp"] - entry["timestamp"] for type in ("bat", "counter", "cp", "pv", "sh"): for module in entry[type].keys(): try: - for key in entry[type][module]: - try: - if key == "imported" or key == "exported": - value = entry[type][module][key] - next_value = next_entry[type][module][key] - entry[type][module][key] = _convert_value_to_kW(value, next_value, time_diff) - except Exception: - log.exception("Fehler beim Berechnen der Leistung") + new_data = {} + if "imported" in entry[type][module].keys() or "exported" in entry[type][module].keys(): + value_imported = entry[type][module]["imported"] if ( + "imported" in entry[type][module].keys()) else 0 + next_value_imported = next_entry[type][module]["imported"] if ( + "imported" in next_entry[type][module].keys()) else 0 + value_exported = entry[type][module]["exported"] if ( + "exported" in entry[type][module].keys()) else 0 + next_value_exported = next_entry[type][module]["exported"] if ( + "exported" in next_entry[type][module].keys()) else 0 + average_power = _calculate_average_power(time_diff, value_imported, next_value_imported, + value_exported, next_value_exported) + if calculation in [CalculationType.POWER, CalculationType.ALL]: + new_data.update({ + "power_average": average_power, + "power_imported": average_power if average_power >= 0 else 0, + "power_exported": average_power * -1 if average_power < 0 else 0 + }) + new_data.update({ + "energy_imported": _calculate_energy_difference(value_imported, next_value_imported), + "energy_exported": _calculate_energy_difference(value_exported, next_value_exported) + }) + entry[type][module].update(new_data) except Exception: log.exception("Fehler beim Berechnen der Leistung") return entry -def _convert_value_to_kW(value, next_value, time_diff): - energy_diff = next_value - value +def _calculate_energy_difference(current_value: float, next_value: float) -> float: + return (next_value - current_value) / 1000 + + +def _calculate_average_power(time_diff: float, current_imported: float = 0, next_imported: float = 0, + current_exported: float = 0, next_exported: float = 0) -> float: + energy_diff = next_imported - current_imported - (next_exported - current_exported) energy_diff_ws = energy_diff * 3600 # Ws power = energy_diff_ws / time_diff # W return power / 1000 # kW From bf808b9998b639ccd99ac09371679b88c0abd3a2 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 14 Aug 2023 09:58:28 +0200 Subject: [PATCH 074/121] add todo for home consumption --- packages/helpermodules/measurement_logging/process_log.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index 60f062b070..bfc7f87a99 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -291,6 +291,7 @@ def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): entry[type][module].update(new_data) except Exception: log.exception("Fehler beim Berechnen der Leistung") + # ToDo: add home consumption return entry From 8bf6ffacc4d1771129531e64564825b41699a9c5 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 17 Aug 2023 15:33:22 +0200 Subject: [PATCH 075/121] fix test --- .../measurement_logging/conftest.py | 130 +++++++++++++++--- .../measurement_logging/process_log.py | 43 +++--- .../measurement_logging/process_log_test.py | 62 +++++---- 3 files changed, 171 insertions(+), 64 deletions(-) diff --git a/packages/helpermodules/measurement_logging/conftest.py b/packages/helpermodules/measurement_logging/conftest.py index 1dec4553f6..c98590ed34 100644 --- a/packages/helpermodules/measurement_logging/conftest.py +++ b/packages/helpermodules/measurement_logging/conftest.py @@ -78,22 +78,114 @@ def daily_log_totals(): @pytest.fixture() def daily_log_entry_kw(): - return {'bat': {'all': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}, - 'bat2': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}}, - 'counter': {'counter0': {'exported': 0.0, - 'grid': True, - 'imported': 8.983420735785948}}, - 'cp': {'all': {'exported': 0.0, 'imported': 11.556276923076913}, - 'cp3': {'exported': 0.0, 'imported': 6.932299665551841}, - 'cp4': {'exported': 0.0, 'imported': 2.3131384615384603}, - 'cp5': {'exported': 0.0, 'imported': 2.3108387959866237}}, - 'date': '09:35', - 'ev': {'ev0': {'soc': 0}}, - 'pv': {'all': {'exported': 1.517056856187291}, - 'pv1': {'exported': 1.517056856187291}}, - 'sh': {'sh1': {'exported': 0.0, - 'imported': 0.0012040133779264216, - 'temp0': 300, - 'temp1': 300, - 'temp2': 300}}, - 'timestamp': 1690529761} + return {"timestamp": 1690529761, + "date": "09:35", + "cp": { + "cp3": { + "imported": 3620.971, + "exported": 0, + "power_average": 6.932299665551841, + "power_imported": 6.932299665551841, + "power_exported": 0, + "energy_imported": 0.5757660000000001, + "energy_exported": 0 + }, + "cp5": { + "imported": 1208.646, + "exported": 0, + "power_average": 2.3108387959866237, + "power_imported": 2.3108387959866237, + "power_exported": 0, + "energy_imported": 0.1919280000000001, + "energy_exported": 0 + }, + "cp4": { + "imported": 1198.566, + "exported": 0, + "power_average": 2.3131384615384603, + "power_imported": 2.3131384615384603, + "power_exported": 0, + "energy_imported": 0.1921189999999999, + "energy_exported": 0 + }, + "all": { + "imported": 6028.183, + "exported": 0, + "power_average": 11.556276923076913, + "power_imported": 11.556276923076913, + "power_exported": 0, + "energy_imported": 0.9598129999999991, + "energy_exported": 0 + } + }, + "ev": { + "ev0": { + "soc": 0 + } + }, + "counter": { + "counter0": { + "imported": 4686.054, + "exported": 2.396, + "grid": True, + "power_average": 8.983420735785948, + "power_imported": 8.983420735785948, + "power_exported": 0, + "energy_imported": 0.7461229999999996, + "energy_exported": 0 + } + }, + "pv": { + "pv1": { + "exported": 804, + "power_average": -1.517056856187291, + "power_imported": 0, + "power_exported": 1.517056856187291, + "energy_imported": 0, + "energy_exported": 0.126 + }, + "all": { + "exported": 804, + "power_average": -1.517056856187291, + "power_imported": 0, + "power_exported": 1.517056856187291, + "energy_imported": 0, + "energy_exported": 0.126 + } + }, + "bat": { + "bat2": { + "imported": 2.42, + "exported": 1742.135, + "soc": 15, + "power_average": -3.316262207357859, + "power_imported": 0, + "power_exported": 3.316262207357859, + "energy_imported": 0, + "energy_exported": 0.27543399999999996 + }, + "all": { + "imported": 2.42, + "exported": 1742.135, + "soc": 15, + "power_average": -3.316262207357859, + "power_imported": 0, + "power_exported": 3.316262207357859, + "energy_imported": 0, + "energy_exported": 0.27543399999999996 + } + }, + "sh": { + "sh1": { + "temp0": 300, + "temp1": 300, + "temp2": 300, + "imported": 0.1, + "exported": 0, + "power_average": 0.0012040133779264216, + "power_imported": 0.0012040133779264216, + "power_exported": 0, + "energy_imported": 0.0001, + "energy_exported": 0 + } + }} diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index bfc7f87a99..b4ed549789 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -160,7 +160,7 @@ def _collect_daily_log_data(date: str): def get_monthly_log(date: str): data = _collect_monthly_log_data(date) data = _process_entries(data, CalculationType.ENERGY) - data = _analyse_power_source(data) + # data = _analyse_power_source(data) return data @@ -185,7 +185,7 @@ def _collect_monthly_log_data(date: str): def get_yearly_log(year: str): data = _collect_yearly_log_data(year) data = _process_entries(data, CalculationType.ENERGY) - data = _analyse_power_source(data) + # data = _analyse_power_source(data) return data @@ -218,7 +218,7 @@ def _collect_yearly_log_data(year: str): def _analyse_power_source(data) -> Dict: if data: - for i in range(0, len(data["entries"])-1): + for i in range(0, len(data["entries"])): data["entries"][i] = _analyse_percentage(data["entries"][i]) data["totals"] = _analyse_percentage(data["totals"]) return data @@ -235,6 +235,7 @@ def format(value): for counter in entry["counter"].values(): if counter.get("grid") is None: return + # ToDo: add "grid" to old data in update_config.py if counter["grid"]: grid_imported = counter["energy_imported"] grid_exported = counter["energy_exported"] @@ -253,11 +254,12 @@ def format(value): def _process_entries(data, calculation): - if data: + if data and len(data["entries"]) > 0: for i in range(0, len(data["entries"])-1): entry = data["entries"][i] next_entry = data["entries"][i+1] data["entries"][i] = _process_entry(entry, next_entry, calculation) + data["entries"].pop() return data @@ -268,14 +270,22 @@ def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): try: new_data = {} if "imported" in entry[type][module].keys() or "exported" in entry[type][module].keys(): - value_imported = entry[type][module]["imported"] if ( - "imported" in entry[type][module].keys()) else 0 - next_value_imported = next_entry[type][module]["imported"] if ( - "imported" in next_entry[type][module].keys()) else 0 - value_exported = entry[type][module]["exported"] if ( - "exported" in entry[type][module].keys()) else 0 - next_value_exported = next_entry[type][module]["exported"] if ( - "exported" in next_entry[type][module].keys()) else 0 + try: + value_imported = entry[type][module]["imported"] + except KeyError: + value_imported = 0 + try: + next_value_imported = next_entry[type][module]["imported"] + except KeyError: + next_value_imported = value_imported + try: + value_exported = entry[type][module]["exported"] + except KeyError: + value_exported = 0 + try: + next_value_exported = next_entry[type][module]["exported"] + except KeyError: + next_value_exported = value_exported average_power = _calculate_average_power(time_diff, value_imported, next_value_imported, value_exported, next_value_exported) if calculation in [CalculationType.POWER, CalculationType.ALL]: @@ -284,10 +294,11 @@ def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): "power_imported": average_power if average_power >= 0 else 0, "power_exported": average_power * -1 if average_power < 0 else 0 }) - new_data.update({ - "energy_imported": _calculate_energy_difference(value_imported, next_value_imported), - "energy_exported": _calculate_energy_difference(value_exported, next_value_exported) - }) + if calculation in [CalculationType.ENERGY, CalculationType.ALL]: + new_data.update({ + "energy_imported": _calculate_energy_difference(value_imported, next_value_imported), + "energy_exported": _calculate_energy_difference(value_exported, next_value_exported) + }) entry[type][module].update(new_data) except Exception: log.exception("Fehler beim Berechnen der Leistung") diff --git a/packages/helpermodules/measurement_logging/process_log_test.py b/packages/helpermodules/measurement_logging/process_log_test.py index 8bb85b931d..011dba52b2 100644 --- a/packages/helpermodules/measurement_logging/process_log_test.py +++ b/packages/helpermodules/measurement_logging/process_log_test.py @@ -1,5 +1,9 @@ -from helpermodules.measurement_logging.process_log import (_analyse_percentage, _convert, _convert_value_to_kW, - get_totals) +from helpermodules.measurement_logging.process_log import ( + # _analyse_percentage, + _calculate_average_power, + _process_entry, + get_totals, + CalculationType) def test_get_totals(daily_log_sample, daily_log_totals): @@ -10,36 +14,36 @@ def test_get_totals(daily_log_sample, daily_log_totals): assert totals == daily_log_totals -def test_analyse_percentage(daily_log_entry_kw): - # setup and execution - entry = _analyse_percentage(daily_log_entry_kw) - - # evaluation - assert entry == {'bat': {'all': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}, - 'bat2': {'exported': 3.316262207357859, 'imported': 0.0, 'soc': 15}}, - 'counter': {'counter0': {'exported': 0.0, - 'grid': True, - 'imported': 8.983420735785948}}, - 'cp': {'all': {'exported': 0.0, 'imported': 11.556276923076913}, - 'cp3': {'exported': 0.0, 'imported': 6.932299665551841}, - 'cp4': {'exported': 0.0, 'imported': 2.3131384615384603}, - 'cp5': {'exported': 0.0, 'imported': 2.3108387959866237}}, - 'date': '09:35', - 'ev': {'ev0': {'soc': 0}}, - 'pv': {'all': {'exported': 1.517056856187291}, - 'pv1': {'exported': 1.517056856187291}}, - 'sh': {'sh1': {'exported': 0.0, - 'imported': 0.0012040133779264216, - 'temp0': 300, - 'temp1': 300, - 'temp2': 300}}, - 'timestamp': 1690529761, - "power_source": {"grid": 65.02, "pv": 10.98, "bat": 24.0, "cp": 0.0}} +# def test_analyse_percentage(daily_log_entry_kw): +# # setup and execution +# entry = _analyse_percentage(daily_log_entry_kw) + +# # evaluation +# assert entry == {'bat': {'all': {'energy_exported': 3.316262207357859, 'energy_imported': 0.0, 'soc': 15}, +# 'bat2': {'energy_exported': 3.316262207357859, 'energy_imported': 0.0, 'soc': 15}}, +# 'counter': {'counter0': {'energy_exported': 0.0, +# 'grid': True, +# 'energy_imported': 8.983420735785948}}, +# 'cp': {'all': {'energy_exported': 0.0, 'energy_imported': 11.556276923076913}, +# 'cp3': {'energy_exported': 0.0, 'energy_imported': 6.932299665551841}, +# 'cp4': {'energy_exported': 0.0, 'energy_imported': 2.3131384615384603}, +# 'cp5': {'energy_exported': 0.0, 'energy_imported': 2.3108387959866237}}, +# 'date': '09:35', +# 'ev': {'ev0': {'soc': 0}}, +# 'pv': {'all': {'energy_exported': 1.517056856187291}, +# 'pv1': {'energy_exported': 1.517056856187291}}, +# 'sh': {'sh1': {'energy_exported': 0.0, +# 'energy_imported': 0.0012040133779264216, +# 'temp0': 300, +# 'temp1': 300, +# 'temp2': 300}}, +# 'timestamp': 1690529761, +# "power_source": {"grid": 65.02, "pv": 10.98, "bat": 24.0, "cp": 0.0}} def test_convert_value_to_kW(): # setup and execution - power = _convert_value_to_kW(100, 250, 300) + power = _calculate_average_power(100, 250, 300) # evaluation assert power == 1.8 @@ -47,7 +51,7 @@ def test_convert_value_to_kW(): def test_convert(daily_log_entry_kw, daily_log_sample): # setup and execution - entry = _convert(daily_log_sample[0], daily_log_sample[1]) + entry = _process_entry(daily_log_sample[0], daily_log_sample[1], CalculationType.ALL) # evaluation assert entry == daily_log_entry_kw From 1d796f5d39cf494e8610c4ceb9169f59eaad44a3 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 22 Aug 2023 09:47:38 +0200 Subject: [PATCH 076/121] Steca: Fix no production --- .../modules/devices/kostal_steca/inverter.py | 6 ++---- .../devices/kostal_steca/inverter_test.py | 13 +++++++++--- .../measurements_no_production.xml | 20 +++++++++++++++++++ ...ements.xml => measurements_production.xml} | 0 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 packages/modules/devices/kostal_steca/measurements_no_production.xml rename packages/modules/devices/kostal_steca/{measurements.xml => measurements_production.xml} (100%) diff --git a/packages/modules/devices/kostal_steca/inverter.py b/packages/modules/devices/kostal_steca/inverter.py index 6e8d226c26..4c23790eea 100644 --- a/packages/modules/devices/kostal_steca/inverter.py +++ b/packages/modules/devices/kostal_steca/inverter.py @@ -3,7 +3,6 @@ from typing import Optional, Tuple import xml.etree.ElementTree as ET import re -from math import isnan from modules.common import req from modules.common.component_state import InverterState @@ -38,9 +37,8 @@ def get_values(self) -> Tuple[float, Optional[float]]: # call for XML file and parse it for current PV power measurements = req.get_http_session().get("http://" + self.ip_address + "/measurements.xml", timeout=2).text - power = float(ET.fromstring(measurements).find( - ".//Measurement[@Type='AC_Power']").get("Value")) * -1 - power = 0 if isnan(power) else power + power_raw = ET.fromstring(measurements).find(".//Measurement[@Type='AC_Power']").get("Value") + power = 0 if power_raw is None else float(power_raw) * -1 if self.component_config.configuration.variant_steca: # call for XML file and parse it for total produced kwh diff --git a/packages/modules/devices/kostal_steca/inverter_test.py b/packages/modules/devices/kostal_steca/inverter_test.py index 2395fc6140..1f2c5c35a1 100644 --- a/packages/modules/devices/kostal_steca/inverter_test.py +++ b/packages/modules/devices/kostal_steca/inverter_test.py @@ -1,14 +1,21 @@ +import pytest + from modules.devices.kostal_steca.config import KostalStecaInverterSetup from modules.devices.kostal_steca.inverter import KostalStecaInverter SAMPLE_IP = "1.1.1.1" -def test_get_values(requests_mock): +@pytest.mark.parametrize("measurements_file, expected_power", + [ + pytest.param("measurements_production.xml", -132.8, id="WR produziert"), + pytest.param("measurements_no_production.xml", 0, id="WR produziert nicht"), + ]) +def test_get_values(measurements_file, expected_power, requests_mock): # setup inverter = KostalStecaInverter(KostalStecaInverterSetup(), SAMPLE_IP) - with open("packages/modules/devices/kostal_steca/measurements.xml", "r") as f: + with open("packages/modules/devices/kostal_steca/"+measurements_file, "r") as f: measurements_sample = f.read() requests_mock.get("http://" + SAMPLE_IP + "/measurements.xml", text=measurements_sample) @@ -20,5 +27,5 @@ def test_get_values(requests_mock): power, exported = inverter.get_values() # evaluation - assert power == -132.8 + assert power == expected_power assert exported == 12306056 diff --git a/packages/modules/devices/kostal_steca/measurements_no_production.xml b/packages/modules/devices/kostal_steca/measurements_no_production.xml new file mode 100644 index 0000000000..10e2abaf39 --- /dev/null +++ b/packages/modules/devices/kostal_steca/measurements_no_production.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/modules/devices/kostal_steca/measurements.xml b/packages/modules/devices/kostal_steca/measurements_production.xml similarity index 100% rename from packages/modules/devices/kostal_steca/measurements.xml rename to packages/modules/devices/kostal_steca/measurements_production.xml From 4e32a807dd390ec6dde9dcde14383d887f593fe8 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 21 Aug 2023 10:21:24 +0200 Subject: [PATCH 077/121] improve module settings --- packages/modules/devices/shelly/config.py | 4 ++-- packages/modules/devices/shelly/device.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/modules/devices/shelly/config.py b/packages/modules/devices/shelly/config.py index 6a9d20b0d5..a831ee9403 100644 --- a/packages/modules/devices/shelly/config.py +++ b/packages/modules/devices/shelly/config.py @@ -5,8 +5,8 @@ @auto_str class ShellyConfiguration: - def __init__(self, address: str = None, generation: Optional[int] = None): - self.address = address + def __init__(self, ip_address: Optional[str] = None, generation: Optional[int] = None): + self.ip_address = ip_address self.generation = generation diff --git a/packages/modules/devices/shelly/device.py b/packages/modules/devices/shelly/device.py index c7ac8350ce..04be22c494 100644 --- a/packages/modules/devices/shelly/device.py +++ b/packages/modules/devices/shelly/device.py @@ -26,11 +26,11 @@ def get_device_generation(address: str) -> int: def create_device(device_config: Shelly) -> ConfigurableDevice: def create_inverter_component(component_config: ShellyInverterSetup) -> ShellyInverter: - return ShellyInverter(device_config.id, component_config, device_config.configuration.address, + return ShellyInverter(device_config.id, component_config, device_config.configuration.ip_address, device_config.configuration.generation) - if device_config.configuration.generation is None and device_config.configuration.address is not None: - device_config.configuration.generation = get_device_generation(device_config.configuration.address) + if device_config.configuration.generation is None and device_config.configuration.ip_address is not None: + device_config.configuration.generation = get_device_generation(device_config.configuration.ip_address) return ConfigurableDevice( device_config=device_config, @@ -51,7 +51,7 @@ def run_device_legacy(device_config: Shelly, def create_legacy_device_config(address: str, generation: int, num: int) -> Shelly: - device_config = Shelly(configuration=ShellyConfiguration(address=address, generation=generation), id=num) + device_config = Shelly(configuration=ShellyConfiguration(ip_address=address, generation=generation), id=num) log.debug("Config: %s", device_config.configuration) return device_config From 25d7c902d1ac62b4d34891b15706ca979d5733c2 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 22 Aug 2023 11:35:33 +0200 Subject: [PATCH 078/121] build UI --- ...eLog-5f30bcb4.js => ChargeLog-b9d6370b.js} | 2 +- ...js => ChargePointInstallation-c38ea51d.js} | 2 +- .../{Chart-49b639b4.js => Chart-0a62513c.js} | 2 +- ...ig-da9d6c5e.js => CloudConfig-dd687549.js} | 2 +- .../assets/DataManagement-8a02aa30.js | 1 - .../assets/DataManagement-aa9c5920.js | 1 + ...ig-ddbc648b.js => DebugConfig-c383ba34.js} | 2 +- ...689.js => GeneralChargeConfig-26a2df84.js} | 2 +- ...-36423866.js => GeneralConfig-a70bba3b.js} | 2 +- .../assets/HardwareInstallation-193acb85.js | 1 + .../assets/HardwareInstallation-7f988a97.js | 1 - ...732.js => InstantChargeConfig-3082d56a.js} | 2 +- ...-0aa17b31.js => LegalSettings-42f245ba.js} | 2 +- ...ca.js => LoadManagementConfig-463c13a8.js} | 2 +- ...2c967f.js => MqttBridgeConfig-87575327.js} | 2 +- ...c83c.js => OpenwbSortableList-7d137bb0.js} | 2 +- ...49f3.js => OptionalComponents-ce43ca94.js} | 2 +- ...233c1da7.js => PVChargeConfig-2ffbdec7.js} | 2 +- ...b.js => ScheduledChargeConfig-e9950f4c.js} | 2 +- ...{Status-5b447ae3.js => Status-ea1fbcc9.js} | 2 +- ...upport-6b29d3b0.js => Support-bd862382.js} | 2 +- ...{System-57179bf7.js => System-86742d64.js} | 2 +- ...e-06f9cd00.js => TestingStore-7adb4368.js} | 2 +- ...158fc9.js => TimeChargeConfig-72fb7dc8.js} | 2 +- ...-64d2df77.js => VehicleConfig-32bc7a74.js} | 2 +- web/settings/assets/backup_cloud-b6c73543.js | 1 - ...d-f9884751.js => backup_cloud-e2986e8e.js} | 2 +- web/settings/assets/backup_cloud-e42eb0f9.js | 1 + .../{bat-6c7e4549.js => bat-0735bfb3.js} | 2 +- .../{bat-e9bd65aa.js => bat-0f0a85bc.js} | 2 +- web/settings/assets/bat-10d8c398.js | 1 + .../{bat-0dc7df81.js => bat-1761bb8c.js} | 2 +- .../{bat-78371791.js => bat-1edb0ead.js} | 2 +- web/settings/assets/bat-2c2c1739.js | 1 - .../{bat-9cf99a8b.js => bat-2cb7fcb7.js} | 2 +- .../{bat-05d57853.js => bat-374aadf3.js} | 2 +- .../{bat-747ec82c.js => bat-41d251bc.js} | 2 +- .../{bat-f32f983a.js => bat-4f8ed3c9.js} | 2 +- .../{bat-6a774d77.js => bat-57cb095c.js} | 2 +- .../{bat-9fa50fa7.js => bat-5a3aee6e.js} | 2 +- .../{bat-7892c6ff.js => bat-701b11a5.js} | 2 +- .../{bat-862fe547.js => bat-8594bebd.js} | 2 +- .../{bat-c86a746f.js => bat-86e9bc80.js} | 2 +- .../{bat-96b30c95.js => bat-94ced6ef.js} | 2 +- .../{bat-ec186c85.js => bat-974e5d23.js} | 2 +- .../{bat-3a522162.js => bat-99ab2b7b.js} | 2 +- .../{bat-8d465039.js => bat-9ba92541.js} | 2 +- .../{bat-b9b268e2.js => bat-9e87a8db.js} | 2 +- .../{bat-e83535a3.js => bat-aaa94877.js} | 2 +- .../{bat-8e5275f9.js => bat-ad02ebbd.js} | 2 +- .../{bat-bd482ff6.js => bat-c9c9c592.js} | 2 +- .../{bat-552bb794.js => bat-d030cd24.js} | 2 +- .../{bat-56e740de.js => bat-d3c76890.js} | 2 +- .../{bat-5027e2dc.js => bat-dc75c3bc.js} | 2 +- .../{bat-b860d161.js => bat-de9e7863.js} | 2 +- .../{bat-0365f283.js => bat-e372d758.js} | 2 +- .../{bat-a812139b.js => bat-e7a43b7b.js} | 2 +- .../{bat-ce75f78c.js => bat-f7664e62.js} | 2 +- .../{bat-9c4cb66b.js => bat-f89e85e8.js} | 2 +- .../{bat-34292ed1.js => bat-fe54661f.js} | 2 +- ...at_api-2f620f71.js => bat_api-83f4eb5d.js} | 2 +- ...bus-1de28157.js => bat_modbus-b77c2017.js} | 2 +- ...962a36.js => bat_smart_energy-040c23a4.js} | 2 +- ...nt-84db1946.js => chargePoint-33a12343.js} | 2 +- ...nt-04c96676.js => chargePoint-651f8f5f.js} | 2 +- ...nt-83c5fa5d.js => chargePoint-6a041309.js} | 2 +- ...nt-dc724714.js => chargePoint-a0a4acbf.js} | 2 +- ...nt-10dd26b7.js => chargePoint-c1796cd6.js} | 2 +- ...nt-7389b890.js => chargePoint-fe6ccb61.js} | 2 +- ...mands-022bb19a.js => commands-0085051f.js} | 2 +- ...ounter-b60b6e4a.js => counter-091a96b7.js} | 2 +- ...ounter-8142b909.js => counter-122dd37a.js} | 2 +- ...ounter-746d0e2d.js => counter-1aee48a7.js} | 2 +- ...ounter-4bfdc2cd.js => counter-1dc0e174.js} | 2 +- web/settings/assets/counter-26ce225d.js | 1 - ...ounter-f1ea356e.js => counter-27a9c2ee.js} | 2 +- ...ounter-ea469ce2.js => counter-29ac2dbe.js} | 2 +- ...ounter-5643a400.js => counter-2d2082cf.js} | 2 +- ...ounter-dc28491c.js => counter-2d7380c9.js} | 2 +- ...ounter-9b94bf71.js => counter-2daf569f.js} | 2 +- ...ounter-1d0f3892.js => counter-30000cd2.js} | 2 +- ...ounter-02f588be.js => counter-333c1a6d.js} | 2 +- ...ounter-dc4e356a.js => counter-34bc9327.js} | 2 +- ...ounter-9db9f949.js => counter-36353861.js} | 2 +- ...ounter-b9602155.js => counter-373a1c10.js} | 2 +- ...ounter-ee7b7fc2.js => counter-3aa24e62.js} | 2 +- ...ounter-c22cfbf7.js => counter-43fc77fa.js} | 2 +- ...ounter-0b0f0c4e.js => counter-596d7121.js} | 2 +- ...ounter-cd468b50.js => counter-5c24ebc7.js} | 2 +- ...ounter-7f35a959.js => counter-66249572.js} | 2 +- ...ounter-816bc001.js => counter-6d9b8554.js} | 2 +- ...ounter-ba947ca5.js => counter-74542c06.js} | 2 +- ...ounter-0a70ba4e.js => counter-8003bfd1.js} | 2 +- ...ounter-81355be8.js => counter-836555cd.js} | 2 +- ...ounter-db44398b.js => counter-87037b08.js} | 2 +- ...ounter-d3d1ea3f.js => counter-8741a800.js} | 2 +- web/settings/assets/counter-87be6226.js | 1 + ...ounter-35296ab7.js => counter-88eb412e.js} | 2 +- ...ounter-d1b5bc9e.js => counter-8fdb9d26.js} | 2 +- ...ounter-a17994d5.js => counter-96604727.js} | 2 +- ...ounter-058092d9.js => counter-9f3c9c7a.js} | 2 +- ...ounter-cef05356.js => counter-b5fad35e.js} | 2 +- ...ounter-347ba16d.js => counter-bac10632.js} | 2 +- ...ounter-15317c83.js => counter-be7ebe08.js} | 2 +- ...ounter-9db02eb0.js => counter-c8a6ec77.js} | 2 +- ...ounter-cc16dae8.js => counter-d6b54631.js} | 2 +- ...ounter-56fdc27e.js => counter-dc035a3e.js} | 2 +- ...ounter-f29aec2b.js => counter-e3b8a3fa.js} | 2 +- ...ounter-2df223d5.js => counter-e44eee41.js} | 2 +- ...ounter-4b4b6fcb.js => counter-e9ec98c5.js} | 2 +- web/settings/assets/counter-ebca198b.js | 1 + ...ounter-75067630.js => counter-f3278b0c.js} | 2 +- web/settings/assets/counter-f9804b26.js | 1 - ...ounter-8e5b4e19.js => counter-fa32a0cf.js} | 2 +- ..._s0-55cbf638.js => counter_s0-764584ba.js} | 2 +- ..._sm-b8d44e45.js => counter_sm-ea82381f.js} | 2 +- ...{device-d36a7958.js => device-007ca4fb.js} | 2 +- ...{device-cbfffa6e.js => device-0ac32d64.js} | 2 +- ...{device-c1fd6c65.js => device-163e7968.js} | 2 +- ...{device-0fcb1898.js => device-1ae9d038.js} | 2 +- ...{device-5a0ee5e7.js => device-1da87f6d.js} | 2 +- ...{device-78972dd5.js => device-217340a2.js} | 2 +- ...{device-2c84b24e.js => device-2637042f.js} | 2 +- ...{device-0d55c208.js => device-2677ebed.js} | 2 +- ...{device-a5d80d29.js => device-26d1cd71.js} | 2 +- ...{device-1e5af3ea.js => device-27f1f947.js} | 2 +- ...{device-0afef9f8.js => device-38cd05bd.js} | 2 +- ...{device-227fe008.js => device-3d5e6b95.js} | 2 +- ...{device-f915e9e1.js => device-4674babe.js} | 2 +- ...{device-3b02f789.js => device-50e6b066.js} | 2 +- ...{device-0e74116d.js => device-5eae489e.js} | 2 +- ...{device-2078311b.js => device-658cf7d5.js} | 2 +- web/settings/assets/device-6b6351d4.js | 1 + ...{device-edfb92e7.js => device-711c4142.js} | 2 +- ...{device-4a9aeedd.js => device-774e8229.js} | 2 +- ...{device-c8f59f1c.js => device-796f2679.js} | 2 +- ...{device-c492c79f.js => device-7db846be.js} | 2 +- ...{device-1f86752d.js => device-7eb7f018.js} | 2 +- ...{device-39d25848.js => device-805a57b1.js} | 2 +- ...{device-e04c8431.js => device-81fa6cad.js} | 2 +- ...{device-18559536.js => device-8c005647.js} | 2 +- ...{device-5ae4acfc.js => device-8d3984b8.js} | 2 +- ...{device-fc73a673.js => device-8eeabc14.js} | 2 +- ...{device-c06281fa.js => device-91bdc917.js} | 2 +- ...{device-79231634.js => device-9507155a.js} | 2 +- ...{device-4b441c71.js => device-97a184d3.js} | 2 +- ...{device-61765b74.js => device-99280bbf.js} | 2 +- ...{device-84ee9f0e.js => device-a55b29f8.js} | 2 +- ...{device-6f67126a.js => device-aa08fc7f.js} | 2 +- ...{device-47e73557.js => device-aba64669.js} | 2 +- ...{device-258d34d8.js => device-ae95c2d3.js} | 2 +- ...{device-dbb2dc55.js => device-b4c7f099.js} | 2 +- ...{device-a211281f.js => device-b78ab975.js} | 2 +- ...{device-a276a5e8.js => device-b9e954eb.js} | 2 +- ...{device-198215c0.js => device-bfe71246.js} | 2 +- ...{device-48b6056d.js => device-c7f03dad.js} | 2 +- ...{device-e1c1fe17.js => device-c7f8802d.js} | 2 +- ...{device-c6d8e75d.js => device-cbc50bc1.js} | 2 +- ...{device-3875053c.js => device-cbdcd521.js} | 2 +- ...{device-f0707a59.js => device-d3af1afc.js} | 2 +- ...{device-6b61f10b.js => device-d70aa0bc.js} | 2 +- ...{device-6bc81270.js => device-d77016c1.js} | 2 +- ...{device-7c1416ae.js => device-e3c08fb4.js} | 2 +- ...{device-d4c2290d.js => device-e4295529.js} | 2 +- ...{device-81cfe576.js => device-e48058b2.js} | 2 +- ...{device-e0c91363.js => device-e85a7920.js} | 2 +- ...{device-51726464.js => device-ed00b326.js} | 2 +- ...{device-8ad58e8f.js => device-ee213d99.js} | 2 +- ...{device-2120f8c0.js => device-f0ead4af.js} | 2 +- ...{device-43fe3974.js => device-f7ed291a.js} | 2 +- ...{device-c35af9f0.js => device-fd68e523.js} | 2 +- ...{device-e7707776.js => device-ff40d8e1.js} | 2 +- ...e-8212a288.js => displayTheme-65aaa96a.js} | 2 +- ...71401.js => external_inverter-3a87b7e0.js} | 2 +- ...d661e.js => external_inverter-79f2751a.js} | 2 +- ...e7859.js => external_inverter-fc2cb871.js} | 2 +- .../{index-7f257223.js => index-ff24c9c8.js} | 2 +- ...erter-5cf7f4ea.js => inverter-00a09c36.js} | 2 +- web/settings/assets/inverter-04c6e1e4.js | 1 + ...erter-c53f4fbf.js => inverter-0769e573.js} | 2 +- ...erter-5231c6c2.js => inverter-106f6b2a.js} | 2 +- ...erter-7b30173d.js => inverter-151fa9c5.js} | 2 +- ...erter-25c50f0a.js => inverter-1bbefb9c.js} | 2 +- ...erter-ebb193da.js => inverter-1bcb55bc.js} | 2 +- ...erter-a66f1636.js => inverter-239362ff.js} | 2 +- ...erter-e45e304e.js => inverter-23c62af1.js} | 2 +- ...erter-502f629e.js => inverter-26fc0c4d.js} | 2 +- ...erter-066b9c17.js => inverter-3067b8de.js} | 2 +- ...erter-3e75383d.js => inverter-33d71d7c.js} | 2 +- ...erter-b4097339.js => inverter-3639b6ee.js} | 2 +- ...erter-2cf514ef.js => inverter-36547adc.js} | 2 +- ...erter-0748897a.js => inverter-3849924d.js} | 2 +- ...erter-1e116570.js => inverter-428bf3c7.js} | 2 +- ...erter-44c0f415.js => inverter-44c42273.js} | 2 +- ...erter-a2fbbf7f.js => inverter-47ad48de.js} | 2 +- web/settings/assets/inverter-5a43761c.js | 1 + ...erter-4cef121f.js => inverter-5c832d19.js} | 2 +- ...erter-c87e2737.js => inverter-67becac8.js} | 2 +- ...erter-90f3d72b.js => inverter-695b5c53.js} | 2 +- ...erter-1e83ea2a.js => inverter-6bf21593.js} | 2 +- ...erter-7ff062ac.js => inverter-6f9c66d1.js} | 2 +- ...erter-142e36fb.js => inverter-71041bec.js} | 2 +- ...erter-766499df.js => inverter-78f559db.js} | 2 +- ...erter-e4d3cc40.js => inverter-7c9d893d.js} | 2 +- ...erter-c21d2035.js => inverter-832936bd.js} | 2 +- ...erter-238294f2.js => inverter-89f2126b.js} | 2 +- web/settings/assets/inverter-902f3710.js | 1 - ...erter-5952b75a.js => inverter-a15db0a0.js} | 2 +- ...erter-5378e193.js => inverter-a3407794.js} | 2 +- ...erter-b1fa892a.js => inverter-a6ddec85.js} | 2 +- ...erter-127bad9a.js => inverter-ac056d1d.js} | 2 +- ...erter-9f25c7b8.js => inverter-b84b910e.js} | 2 +- ...erter-eff782b7.js => inverter-b8fdf4a4.js} | 2 +- ...erter-40527e01.js => inverter-bc58fc73.js} | 2 +- ...erter-c1bf7cde.js => inverter-c3c11140.js} | 2 +- ...erter-1d15d663.js => inverter-d4107377.js} | 2 +- ...erter-9fe0373f.js => inverter-d426b124.js} | 2 +- ...erter-141492ab.js => inverter-dfa572d8.js} | 2 +- ...erter-cbe3f201.js => inverter-e06fd605.js} | 2 +- ...erter-1e818ed4.js => inverter-e440b330.js} | 2 +- ...erter-2cb1f91b.js => inverter-eee1527f.js} | 2 +- ...erter-012c416a.js => inverter-ef72abc7.js} | 2 +- ...erter-4355b01b.js => inverter-fabd24ac.js} | 2 +- ...ehicle-e146fe0e.js => vehicle-0b6d061a.js} | 2 +- ...ehicle-4b3522a6.js => vehicle-30589088.js} | 2 +- ...ehicle-50dd5eb2.js => vehicle-391df8d0.js} | 2 +- ...ehicle-7cd93604.js => vehicle-4249fcff.js} | 2 +- ...ehicle-4b98a311.js => vehicle-56b3de10.js} | 2 +- ...ehicle-6c139591.js => vehicle-67509117.js} | 2 +- ...ehicle-575fb854.js => vehicle-75667aad.js} | 2 +- ...ehicle-e377a977.js => vehicle-7df8b393.js} | 2 +- ...ehicle-e76a744b.js => vehicle-a27fc177.js} | 2 +- ...ehicle-eb74ae86.js => vehicle-b9c60ee5.js} | 2 +- ...ehicle-c5a65e75.js => vehicle-d1763e7a.js} | 2 +- ...ehicle-20cc743a.js => vehicle-d98ffef7.js} | 2 +- ...ehicle-85f19442.js => vehicle-df2230d5.js} | 2 +- web/settings/assets/vendor-59c39d33.js | 100 ++++++++++++++++++ web/settings/assets/vendor-6e5b23b4.js | 100 ------------------ ...s-86f7a224.js => vendor-axios-1660eacd.js} | 2 +- ...75b4fa.js => vendor-bootstrap-aeba3518.js} | 2 +- ...5f622c20.js => vendor-chartjs-4871098e.js} | 2 +- ...f0d4.js => vendor-fortawesome-532a6e75.js} | 2 +- ...-921f231b.js => vendor-jquery-7c356c02.js} | 2 +- ...76726.js => vendor-sortablejs-1a35b5ad.js} | 2 +- web/settings/index.html | 14 +-- 245 files changed, 342 insertions(+), 340 deletions(-) rename web/settings/assets/{ChargeLog-5f30bcb4.js => ChargeLog-b9d6370b.js} (96%) rename web/settings/assets/{ChargePointInstallation-47aec5b8.js => ChargePointInstallation-c38ea51d.js} (94%) rename web/settings/assets/{Chart-49b639b4.js => Chart-0a62513c.js} (98%) rename web/settings/assets/{CloudConfig-da9d6c5e.js => CloudConfig-dd687549.js} (96%) delete mode 100644 web/settings/assets/DataManagement-8a02aa30.js create mode 100644 web/settings/assets/DataManagement-aa9c5920.js rename web/settings/assets/{DebugConfig-ddbc648b.js => DebugConfig-c383ba34.js} (92%) rename web/settings/assets/{GeneralChargeConfig-ac29a689.js => GeneralChargeConfig-26a2df84.js} (87%) rename web/settings/assets/{GeneralConfig-36423866.js => GeneralConfig-a70bba3b.js} (97%) create mode 100644 web/settings/assets/HardwareInstallation-193acb85.js delete mode 100644 web/settings/assets/HardwareInstallation-7f988a97.js rename web/settings/assets/{InstantChargeConfig-05d4f732.js => InstantChargeConfig-3082d56a.js} (84%) rename web/settings/assets/{LegalSettings-0aa17b31.js => LegalSettings-42f245ba.js} (84%) rename web/settings/assets/{LoadManagementConfig-bbe234ca.js => LoadManagementConfig-463c13a8.js} (95%) rename web/settings/assets/{MqttBridgeConfig-152c967f.js => MqttBridgeConfig-87575327.js} (95%) rename web/settings/assets/{OpenwbSortableList-db92c83c.js => OpenwbSortableList-7d137bb0.js} (96%) rename web/settings/assets/{OptionalComponents-56f649f3.js => OptionalComponents-ce43ca94.js} (98%) rename web/settings/assets/{PVChargeConfig-233c1da7.js => PVChargeConfig-2ffbdec7.js} (98%) rename web/settings/assets/{ScheduledChargeConfig-3d69a67b.js => ScheduledChargeConfig-e9950f4c.js} (85%) rename web/settings/assets/{Status-5b447ae3.js => Status-ea1fbcc9.js} (98%) rename web/settings/assets/{Support-6b29d3b0.js => Support-bd862382.js} (94%) rename web/settings/assets/{System-57179bf7.js => System-86742d64.js} (97%) rename web/settings/assets/{TestingStore-06f9cd00.js => TestingStore-7adb4368.js} (95%) rename web/settings/assets/{TimeChargeConfig-d8158fc9.js => TimeChargeConfig-72fb7dc8.js} (84%) rename web/settings/assets/{VehicleConfig-64d2df77.js => VehicleConfig-32bc7a74.js} (94%) delete mode 100644 web/settings/assets/backup_cloud-b6c73543.js rename web/settings/assets/{backup_cloud-f9884751.js => backup_cloud-e2986e8e.js} (92%) create mode 100644 web/settings/assets/backup_cloud-e42eb0f9.js rename web/settings/assets/{bat-6c7e4549.js => bat-0735bfb3.js} (85%) rename web/settings/assets/{bat-e9bd65aa.js => bat-0f0a85bc.js} (86%) create mode 100644 web/settings/assets/bat-10d8c398.js rename web/settings/assets/{bat-0dc7df81.js => bat-1761bb8c.js} (85%) rename web/settings/assets/{bat-78371791.js => bat-1edb0ead.js} (85%) delete mode 100644 web/settings/assets/bat-2c2c1739.js rename web/settings/assets/{bat-9cf99a8b.js => bat-2cb7fcb7.js} (86%) rename web/settings/assets/{bat-05d57853.js => bat-374aadf3.js} (87%) rename web/settings/assets/{bat-747ec82c.js => bat-41d251bc.js} (86%) rename web/settings/assets/{bat-f32f983a.js => bat-4f8ed3c9.js} (94%) rename web/settings/assets/{bat-6a774d77.js => bat-57cb095c.js} (90%) rename web/settings/assets/{bat-9fa50fa7.js => bat-5a3aee6e.js} (86%) rename web/settings/assets/{bat-7892c6ff.js => bat-701b11a5.js} (86%) rename web/settings/assets/{bat-862fe547.js => bat-8594bebd.js} (93%) rename web/settings/assets/{bat-c86a746f.js => bat-86e9bc80.js} (86%) rename web/settings/assets/{bat-96b30c95.js => bat-94ced6ef.js} (86%) rename web/settings/assets/{bat-ec186c85.js => bat-974e5d23.js} (86%) rename web/settings/assets/{bat-3a522162.js => bat-99ab2b7b.js} (61%) rename web/settings/assets/{bat-8d465039.js => bat-9ba92541.js} (85%) rename web/settings/assets/{bat-b9b268e2.js => bat-9e87a8db.js} (87%) rename web/settings/assets/{bat-e83535a3.js => bat-aaa94877.js} (96%) rename web/settings/assets/{bat-8e5275f9.js => bat-ad02ebbd.js} (93%) rename web/settings/assets/{bat-bd482ff6.js => bat-c9c9c592.js} (87%) rename web/settings/assets/{bat-552bb794.js => bat-d030cd24.js} (86%) rename web/settings/assets/{bat-56e740de.js => bat-d3c76890.js} (86%) rename web/settings/assets/{bat-5027e2dc.js => bat-dc75c3bc.js} (86%) rename web/settings/assets/{bat-b860d161.js => bat-de9e7863.js} (61%) rename web/settings/assets/{bat-0365f283.js => bat-e372d758.js} (86%) rename web/settings/assets/{bat-a812139b.js => bat-e7a43b7b.js} (86%) rename web/settings/assets/{bat-ce75f78c.js => bat-f7664e62.js} (94%) rename web/settings/assets/{bat-9c4cb66b.js => bat-f89e85e8.js} (86%) rename web/settings/assets/{bat-34292ed1.js => bat-fe54661f.js} (86%) rename web/settings/assets/{bat_api-2f620f71.js => bat_api-83f4eb5d.js} (86%) rename web/settings/assets/{bat_modbus-1de28157.js => bat_modbus-b77c2017.js} (86%) rename web/settings/assets/{bat_smart_energy-16962a36.js => bat_smart_energy-040c23a4.js} (87%) rename web/settings/assets/{chargePoint-84db1946.js => chargePoint-33a12343.js} (94%) rename web/settings/assets/{chargePoint-04c96676.js => chargePoint-651f8f5f.js} (84%) rename web/settings/assets/{chargePoint-83c5fa5d.js => chargePoint-6a041309.js} (92%) rename web/settings/assets/{chargePoint-dc724714.js => chargePoint-a0a4acbf.js} (95%) rename web/settings/assets/{chargePoint-10dd26b7.js => chargePoint-c1796cd6.js} (98%) rename web/settings/assets/{chargePoint-7389b890.js => chargePoint-fe6ccb61.js} (95%) rename web/settings/assets/{commands-022bb19a.js => commands-0085051f.js} (96%) rename web/settings/assets/{counter-b60b6e4a.js => counter-091a96b7.js} (88%) rename web/settings/assets/{counter-8142b909.js => counter-122dd37a.js} (86%) rename web/settings/assets/{counter-746d0e2d.js => counter-1aee48a7.js} (93%) rename web/settings/assets/{counter-4bfdc2cd.js => counter-1dc0e174.js} (86%) delete mode 100644 web/settings/assets/counter-26ce225d.js rename web/settings/assets/{counter-f1ea356e.js => counter-27a9c2ee.js} (90%) rename web/settings/assets/{counter-ea469ce2.js => counter-29ac2dbe.js} (86%) rename web/settings/assets/{counter-5643a400.js => counter-2d2082cf.js} (91%) rename web/settings/assets/{counter-dc28491c.js => counter-2d7380c9.js} (87%) rename web/settings/assets/{counter-9b94bf71.js => counter-2daf569f.js} (96%) rename web/settings/assets/{counter-1d0f3892.js => counter-30000cd2.js} (86%) rename web/settings/assets/{counter-02f588be.js => counter-333c1a6d.js} (87%) rename web/settings/assets/{counter-dc4e356a.js => counter-34bc9327.js} (85%) rename web/settings/assets/{counter-9db9f949.js => counter-36353861.js} (92%) rename web/settings/assets/{counter-b9602155.js => counter-373a1c10.js} (86%) rename web/settings/assets/{counter-ee7b7fc2.js => counter-3aa24e62.js} (85%) rename web/settings/assets/{counter-c22cfbf7.js => counter-43fc77fa.js} (60%) rename web/settings/assets/{counter-0b0f0c4e.js => counter-596d7121.js} (89%) rename web/settings/assets/{counter-cd468b50.js => counter-5c24ebc7.js} (86%) rename web/settings/assets/{counter-7f35a959.js => counter-66249572.js} (86%) rename web/settings/assets/{counter-816bc001.js => counter-6d9b8554.js} (88%) rename web/settings/assets/{counter-ba947ca5.js => counter-74542c06.js} (86%) rename web/settings/assets/{counter-0a70ba4e.js => counter-8003bfd1.js} (86%) rename web/settings/assets/{counter-81355be8.js => counter-836555cd.js} (86%) rename web/settings/assets/{counter-db44398b.js => counter-87037b08.js} (86%) rename web/settings/assets/{counter-d3d1ea3f.js => counter-8741a800.js} (85%) create mode 100644 web/settings/assets/counter-87be6226.js rename web/settings/assets/{counter-35296ab7.js => counter-88eb412e.js} (87%) rename web/settings/assets/{counter-d1b5bc9e.js => counter-8fdb9d26.js} (91%) rename web/settings/assets/{counter-a17994d5.js => counter-96604727.js} (90%) rename web/settings/assets/{counter-058092d9.js => counter-9f3c9c7a.js} (86%) rename web/settings/assets/{counter-cef05356.js => counter-b5fad35e.js} (97%) rename web/settings/assets/{counter-347ba16d.js => counter-bac10632.js} (90%) rename web/settings/assets/{counter-15317c83.js => counter-be7ebe08.js} (86%) rename web/settings/assets/{counter-9db02eb0.js => counter-c8a6ec77.js} (96%) rename web/settings/assets/{counter-cc16dae8.js => counter-d6b54631.js} (90%) rename web/settings/assets/{counter-56fdc27e.js => counter-dc035a3e.js} (86%) rename web/settings/assets/{counter-f29aec2b.js => counter-e3b8a3fa.js} (86%) rename web/settings/assets/{counter-2df223d5.js => counter-e44eee41.js} (86%) rename web/settings/assets/{counter-4b4b6fcb.js => counter-e9ec98c5.js} (89%) create mode 100644 web/settings/assets/counter-ebca198b.js rename web/settings/assets/{counter-75067630.js => counter-f3278b0c.js} (88%) delete mode 100644 web/settings/assets/counter-f9804b26.js rename web/settings/assets/{counter-8e5b4e19.js => counter-fa32a0cf.js} (86%) rename web/settings/assets/{counter_s0-55cbf638.js => counter_s0-764584ba.js} (86%) rename web/settings/assets/{counter_sm-b8d44e45.js => counter_sm-ea82381f.js} (96%) rename web/settings/assets/{device-d36a7958.js => device-007ca4fb.js} (85%) rename web/settings/assets/{device-cbfffa6e.js => device-0ac32d64.js} (91%) rename web/settings/assets/{device-c1fd6c65.js => device-163e7968.js} (87%) rename web/settings/assets/{device-0fcb1898.js => device-1ae9d038.js} (94%) rename web/settings/assets/{device-5a0ee5e7.js => device-1da87f6d.js} (87%) rename web/settings/assets/{device-78972dd5.js => device-217340a2.js} (88%) rename web/settings/assets/{device-2c84b24e.js => device-2637042f.js} (92%) rename web/settings/assets/{device-0d55c208.js => device-2677ebed.js} (89%) rename web/settings/assets/{device-a5d80d29.js => device-26d1cd71.js} (89%) rename web/settings/assets/{device-1e5af3ea.js => device-27f1f947.js} (87%) rename web/settings/assets/{device-0afef9f8.js => device-38cd05bd.js} (89%) rename web/settings/assets/{device-227fe008.js => device-3d5e6b95.js} (88%) rename web/settings/assets/{device-f915e9e1.js => device-4674babe.js} (85%) rename web/settings/assets/{device-3b02f789.js => device-50e6b066.js} (89%) rename web/settings/assets/{device-0e74116d.js => device-5eae489e.js} (90%) rename web/settings/assets/{device-2078311b.js => device-658cf7d5.js} (87%) create mode 100644 web/settings/assets/device-6b6351d4.js rename web/settings/assets/{device-edfb92e7.js => device-711c4142.js} (89%) rename web/settings/assets/{device-4a9aeedd.js => device-774e8229.js} (87%) rename web/settings/assets/{device-c8f59f1c.js => device-796f2679.js} (88%) rename web/settings/assets/{device-c492c79f.js => device-7db846be.js} (89%) rename web/settings/assets/{device-1f86752d.js => device-7eb7f018.js} (87%) rename web/settings/assets/{device-39d25848.js => device-805a57b1.js} (89%) rename web/settings/assets/{device-e04c8431.js => device-81fa6cad.js} (85%) rename web/settings/assets/{device-18559536.js => device-8c005647.js} (85%) rename web/settings/assets/{device-5ae4acfc.js => device-8d3984b8.js} (89%) rename web/settings/assets/{device-fc73a673.js => device-8eeabc14.js} (87%) rename web/settings/assets/{device-c06281fa.js => device-91bdc917.js} (91%) rename web/settings/assets/{device-79231634.js => device-9507155a.js} (95%) rename web/settings/assets/{device-4b441c71.js => device-97a184d3.js} (95%) rename web/settings/assets/{device-61765b74.js => device-99280bbf.js} (87%) rename web/settings/assets/{device-84ee9f0e.js => device-a55b29f8.js} (96%) rename web/settings/assets/{device-6f67126a.js => device-aa08fc7f.js} (86%) rename web/settings/assets/{device-47e73557.js => device-aba64669.js} (89%) rename web/settings/assets/{device-258d34d8.js => device-ae95c2d3.js} (87%) rename web/settings/assets/{device-dbb2dc55.js => device-b4c7f099.js} (88%) rename web/settings/assets/{device-a211281f.js => device-b78ab975.js} (87%) rename web/settings/assets/{device-a276a5e8.js => device-b9e954eb.js} (89%) rename web/settings/assets/{device-198215c0.js => device-bfe71246.js} (90%) rename web/settings/assets/{device-48b6056d.js => device-c7f03dad.js} (90%) rename web/settings/assets/{device-e1c1fe17.js => device-c7f8802d.js} (86%) rename web/settings/assets/{device-c6d8e75d.js => device-cbc50bc1.js} (91%) rename web/settings/assets/{device-3875053c.js => device-cbdcd521.js} (92%) rename web/settings/assets/{device-f0707a59.js => device-d3af1afc.js} (87%) rename web/settings/assets/{device-6b61f10b.js => device-d70aa0bc.js} (90%) rename web/settings/assets/{device-6bc81270.js => device-d77016c1.js} (87%) rename web/settings/assets/{device-7c1416ae.js => device-e3c08fb4.js} (85%) rename web/settings/assets/{device-d4c2290d.js => device-e4295529.js} (87%) rename web/settings/assets/{device-81cfe576.js => device-e48058b2.js} (91%) rename web/settings/assets/{device-e0c91363.js => device-e85a7920.js} (90%) rename web/settings/assets/{device-51726464.js => device-ed00b326.js} (89%) rename web/settings/assets/{device-8ad58e8f.js => device-ee213d99.js} (89%) rename web/settings/assets/{device-2120f8c0.js => device-f0ead4af.js} (87%) rename web/settings/assets/{device-43fe3974.js => device-f7ed291a.js} (87%) rename web/settings/assets/{device-c35af9f0.js => device-fd68e523.js} (87%) rename web/settings/assets/{device-e7707776.js => device-ff40d8e1.js} (89%) rename web/settings/assets/{displayTheme-8212a288.js => displayTheme-65aaa96a.js} (97%) rename web/settings/assets/{external_inverter-12a71401.js => external_inverter-3a87b7e0.js} (86%) rename web/settings/assets/{external_inverter-266d661e.js => external_inverter-79f2751a.js} (92%) rename web/settings/assets/{external_inverter-114e7859.js => external_inverter-fc2cb871.js} (86%) rename web/settings/assets/{index-7f257223.js => index-ff24c9c8.js} (87%) rename web/settings/assets/{inverter-5cf7f4ea.js => inverter-00a09c36.js} (86%) create mode 100644 web/settings/assets/inverter-04c6e1e4.js rename web/settings/assets/{inverter-c53f4fbf.js => inverter-0769e573.js} (93%) rename web/settings/assets/{inverter-5231c6c2.js => inverter-106f6b2a.js} (88%) rename web/settings/assets/{inverter-7b30173d.js => inverter-151fa9c5.js} (86%) rename web/settings/assets/{inverter-25c50f0a.js => inverter-1bbefb9c.js} (91%) rename web/settings/assets/{inverter-ebb193da.js => inverter-1bcb55bc.js} (86%) rename web/settings/assets/{inverter-a66f1636.js => inverter-239362ff.js} (89%) rename web/settings/assets/{inverter-e45e304e.js => inverter-23c62af1.js} (86%) rename web/settings/assets/{inverter-502f629e.js => inverter-26fc0c4d.js} (94%) rename web/settings/assets/{inverter-066b9c17.js => inverter-3067b8de.js} (86%) rename web/settings/assets/{inverter-3e75383d.js => inverter-33d71d7c.js} (87%) rename web/settings/assets/{inverter-b4097339.js => inverter-3639b6ee.js} (88%) rename web/settings/assets/{inverter-2cf514ef.js => inverter-36547adc.js} (95%) rename web/settings/assets/{inverter-0748897a.js => inverter-3849924d.js} (94%) rename web/settings/assets/{inverter-1e116570.js => inverter-428bf3c7.js} (60%) rename web/settings/assets/{inverter-44c0f415.js => inverter-44c42273.js} (96%) rename web/settings/assets/{inverter-a2fbbf7f.js => inverter-47ad48de.js} (90%) create mode 100644 web/settings/assets/inverter-5a43761c.js rename web/settings/assets/{inverter-4cef121f.js => inverter-5c832d19.js} (86%) rename web/settings/assets/{inverter-c87e2737.js => inverter-67becac8.js} (86%) rename web/settings/assets/{inverter-90f3d72b.js => inverter-695b5c53.js} (86%) rename web/settings/assets/{inverter-1e83ea2a.js => inverter-6bf21593.js} (90%) rename web/settings/assets/{inverter-7ff062ac.js => inverter-6f9c66d1.js} (90%) rename web/settings/assets/{inverter-142e36fb.js => inverter-71041bec.js} (60%) rename web/settings/assets/{inverter-766499df.js => inverter-78f559db.js} (86%) rename web/settings/assets/{inverter-e4d3cc40.js => inverter-7c9d893d.js} (86%) rename web/settings/assets/{inverter-c21d2035.js => inverter-832936bd.js} (86%) rename web/settings/assets/{inverter-238294f2.js => inverter-89f2126b.js} (86%) delete mode 100644 web/settings/assets/inverter-902f3710.js rename web/settings/assets/{inverter-5952b75a.js => inverter-a15db0a0.js} (86%) rename web/settings/assets/{inverter-5378e193.js => inverter-a3407794.js} (93%) rename web/settings/assets/{inverter-b1fa892a.js => inverter-a6ddec85.js} (93%) rename web/settings/assets/{inverter-127bad9a.js => inverter-ac056d1d.js} (86%) rename web/settings/assets/{inverter-9f25c7b8.js => inverter-b84b910e.js} (86%) rename web/settings/assets/{inverter-eff782b7.js => inverter-b8fdf4a4.js} (86%) rename web/settings/assets/{inverter-40527e01.js => inverter-bc58fc73.js} (91%) rename web/settings/assets/{inverter-c1bf7cde.js => inverter-c3c11140.js} (93%) rename web/settings/assets/{inverter-1d15d663.js => inverter-d4107377.js} (86%) rename web/settings/assets/{inverter-9fe0373f.js => inverter-d426b124.js} (86%) rename web/settings/assets/{inverter-141492ab.js => inverter-dfa572d8.js} (86%) rename web/settings/assets/{inverter-cbe3f201.js => inverter-e06fd605.js} (93%) rename web/settings/assets/{inverter-1e818ed4.js => inverter-e440b330.js} (86%) rename web/settings/assets/{inverter-2cb1f91b.js => inverter-eee1527f.js} (93%) rename web/settings/assets/{inverter-012c416a.js => inverter-ef72abc7.js} (89%) rename web/settings/assets/{inverter-4355b01b.js => inverter-fabd24ac.js} (86%) rename web/settings/assets/{vehicle-e146fe0e.js => vehicle-0b6d061a.js} (90%) rename web/settings/assets/{vehicle-4b3522a6.js => vehicle-30589088.js} (94%) rename web/settings/assets/{vehicle-50dd5eb2.js => vehicle-391df8d0.js} (93%) rename web/settings/assets/{vehicle-7cd93604.js => vehicle-4249fcff.js} (95%) rename web/settings/assets/{vehicle-4b98a311.js => vehicle-56b3de10.js} (91%) rename web/settings/assets/{vehicle-6c139591.js => vehicle-67509117.js} (95%) rename web/settings/assets/{vehicle-575fb854.js => vehicle-75667aad.js} (91%) rename web/settings/assets/{vehicle-e377a977.js => vehicle-7df8b393.js} (94%) rename web/settings/assets/{vehicle-e76a744b.js => vehicle-a27fc177.js} (91%) rename web/settings/assets/{vehicle-eb74ae86.js => vehicle-b9c60ee5.js} (91%) rename web/settings/assets/{vehicle-c5a65e75.js => vehicle-d1763e7a.js} (93%) rename web/settings/assets/{vehicle-20cc743a.js => vehicle-d98ffef7.js} (92%) rename web/settings/assets/{vehicle-85f19442.js => vehicle-df2230d5.js} (92%) create mode 100644 web/settings/assets/vendor-59c39d33.js delete mode 100644 web/settings/assets/vendor-6e5b23b4.js rename web/settings/assets/{vendor-axios-86f7a224.js => vendor-axios-1660eacd.js} (99%) rename web/settings/assets/{vendor-bootstrap-6c75b4fa.js => vendor-bootstrap-aeba3518.js} (99%) rename web/settings/assets/{vendor-chartjs-5f622c20.js => vendor-chartjs-4871098e.js} (99%) rename web/settings/assets/{vendor-fortawesome-396ff0d4.js => vendor-fortawesome-532a6e75.js} (99%) rename web/settings/assets/{vendor-jquery-921f231b.js => vendor-jquery-7c356c02.js} (99%) rename web/settings/assets/{vendor-sortablejs-b3476726.js => vendor-sortablejs-1a35b5ad.js} (99%) diff --git a/web/settings/assets/ChargeLog-5f30bcb4.js b/web/settings/assets/ChargeLog-b9d6370b.js similarity index 96% rename from web/settings/assets/ChargeLog-5f30bcb4.js rename to web/settings/assets/ChargeLog-b9d6370b.js index af9e35cd32..36f9ddaa60 100644 --- a/web/settings/assets/ChargeLog-5f30bcb4.js +++ b/web/settings/assets/ChargeLog-b9d6370b.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-396ff0d4.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-6e5b23b4.js";import{C as N}from"./index-7f257223.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-ff24c9c8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-47aec5b8.js b/web/settings/assets/ChargePointInstallation-c38ea51d.js similarity index 94% rename from web/settings/assets/ChargePointInstallation-47aec5b8.js rename to web/settings/assets/ChargePointInstallation-c38ea51d.js index f1b73152c9..75d030085a 100644 --- a/web/settings/assets/ChargePointInstallation-47aec5b8.js +++ b/web/settings/assets/ChargePointInstallation-c38ea51d.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-396ff0d4.js";import{_ as L,C as oe}from"./index-7f257223.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dc724714.js"),["assets/chargePoint-dc724714.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-83c5fa5d.js"),["assets/chargePoint-83c5fa5d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-10dd26b7.js"),["assets/chargePoint-10dd26b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-04c96676.js"),["assets/chargePoint-04c96676.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-7389b890.js"),["assets/chargePoint-7389b890.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-84db1946.js"),["assets/chargePoint-84db1946.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-022bb19a.js"),["assets/commands-022bb19a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-ff24c9c8.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-49b639b4.js b/web/settings/assets/Chart-0a62513c.js similarity index 98% rename from web/settings/assets/Chart-49b639b4.js rename to web/settings/assets/Chart-0a62513c.js index 671355c1a9..fcfa0efa80 100644 --- a/web/settings/assets/Chart-49b639b4.js +++ b/web/settings/assets/Chart-0a62513c.js @@ -1 +1 @@ -import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-7f257223.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-5f622c20.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; +import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-ff24c9c8.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-4871098e.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; diff --git a/web/settings/assets/CloudConfig-da9d6c5e.js b/web/settings/assets/CloudConfig-dd687549.js similarity index 96% rename from web/settings/assets/CloudConfig-da9d6c5e.js rename to web/settings/assets/CloudConfig-dd687549.js index 1a637f02df..811257eedd 100644 --- a/web/settings/assets/CloudConfig-da9d6c5e.js +++ b/web/settings/assets/CloudConfig-dd687549.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-7f257223.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f9884751.js"),["assets/backup_cloud-f9884751.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-b6c73543.js"),["assets/backup_cloud-b6c73543.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),T(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="counter"&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="inverter"&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))e.type=="bat"&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Fe=n("br",null,null,-1),We={class:"input-group"},Te={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",We,[n("div",Te,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(F,null,W(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(F,null,W(l.sectionComponents,b=>(f(),T(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DataManagement-aa9c5920.js b/web/settings/assets/DataManagement-aa9c5920.js new file mode 100644 index 0000000000..7d4327f8c5 --- /dev/null +++ b/web/settings/assets/DataManagement-aa9c5920.js @@ -0,0 +1 @@ +import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-532a6e75.js";import{_ as D,C as N}from"./index-ff24c9c8.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e42eb0f9.js"),["assets/backup_cloud-e42eb0f9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-ddbc648b.js b/web/settings/assets/DebugConfig-c383ba34.js similarity index 92% rename from web/settings/assets/DebugConfig-ddbc648b.js rename to web/settings/assets/DebugConfig-c383ba34.js index 6a5c9bdb3d..8ab87ee212 100644 --- a/web/settings/assets/DebugConfig-ddbc648b.js +++ b/web/settings/assets/DebugConfig-c383ba34.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as _}from"./index-7f257223.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-ff24c9c8.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-ac29a689.js b/web/settings/assets/GeneralChargeConfig-26a2df84.js similarity index 87% rename from web/settings/assets/GeneralChargeConfig-ac29a689.js rename to web/settings/assets/GeneralChargeConfig-26a2df84.js index 33dc2b649f..fd4fdd4d66 100644 --- a/web/settings/assets/GeneralChargeConfig-ac29a689.js +++ b/web/settings/assets/GeneralChargeConfig-26a2df84.js @@ -1 +1 @@ -import{C as c}from"./index-7f257223.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-ff24c9c8.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-36423866.js b/web/settings/assets/GeneralConfig-a70bba3b.js similarity index 97% rename from web/settings/assets/GeneralConfig-36423866.js rename to web/settings/assets/GeneralConfig-a70bba3b.js index d4fc23a244..29de9c6f16 100644 --- a/web/settings/assets/GeneralConfig-36423866.js +++ b/web/settings/assets/GeneralConfig-a70bba3b.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-7f257223.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-3067b8de.js"),["assets/inverter-3067b8de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-99ab2b7b.js"),["assets/bat-99ab2b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-de9e7863.js"),["assets/bat-de9e7863.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-43fc77fa.js"),["assets/counter-43fc77fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-71041bec.js"),["assets/inverter-71041bec.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-10d8c398.js"),["assets/bat-10d8c398.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-87be6226.js"),["assets/counter-87be6226.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-5a43761c.js"),["assets/inverter-5a43761c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-428bf3c7.js"),["assets/inverter-428bf3c7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-04c6e1e4.js"),["assets/inverter-04c6e1e4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e372d758.js"),["assets/bat-e372d758.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-040c23a4.js"),["assets/bat_smart_energy-040c23a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f3c9c7a.js"),["assets/counter-9f3c9c7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c42273.js"),["assets/inverter-44c42273.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-ebca198b.js"),["assets/counter-ebca198b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-7f988a97.js b/web/settings/assets/HardwareInstallation-7f988a97.js deleted file mode 100644 index 941e3aa9c7..0000000000 --- a/web/settings/assets/HardwareInstallation-7f988a97.js +++ /dev/null @@ -1 +0,0 @@ -import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-396ff0d4.js";import{_ as e,C as X}from"./index-7f257223.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-9c4cb66b.js"),["assets/bat-9c4cb66b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-cd468b50.js"),["assets/counter-cd468b50.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-c21d2035.js"),["assets/inverter-c21d2035.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-7892c6ff.js"),["assets/bat-7892c6ff.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-8142b909.js"),["assets/counter-8142b909.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-12a71401.js"),["assets/external_inverter-12a71401.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-5cf7f4ea.js"),["assets/inverter-5cf7f4ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-6c7e4549.js"),["assets/bat-6c7e4549.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ba947ca5.js"),["assets/counter-ba947ca5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-a17994d5.js"),["assets/counter-a17994d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a2fbbf7f.js"),["assets/inverter-a2fbbf7f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-78371791.js"),["assets/bat-78371791.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-ee7b7fc2.js"),["assets/counter-ee7b7fc2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-114e7859.js"),["assets/external_inverter-114e7859.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-90f3d72b.js"),["assets/inverter-90f3d72b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-75067630.js"),["assets/counter-75067630.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b4097339.js"),["assets/inverter-b4097339.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-b9b268e2.js"),["assets/bat-b9b268e2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-f29aec2b.js"),["assets/counter-f29aec2b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-c87e2737.js"),["assets/inverter-c87e2737.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-bd482ff6.js"),["assets/bat-bd482ff6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-55cbf638.js"),["assets/counter_s0-55cbf638.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-b8d44e45.js"),["assets/counter_sm-b8d44e45.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-7b30173d.js"),["assets/inverter-7b30173d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-34292ed1.js"),["assets/bat-34292ed1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-db44398b.js"),["assets/counter-db44398b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-1d15d663.js"),["assets/inverter-1d15d663.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-e83535a3.js"),["assets/bat-e83535a3.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-cef05356.js"),["assets/counter-cef05356.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-502f629e.js"),["assets/inverter-502f629e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-56e740de.js"),["assets/bat-56e740de.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-1d0f3892.js"),["assets/counter-1d0f3892.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-4cef121f.js"),["assets/inverter-4cef121f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-ea469ce2.js"),["assets/counter-ea469ce2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f32f983a.js"),["assets/bat-f32f983a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-9db02eb0.js"),["assets/counter-9db02eb0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c1bf7cde.js"),["assets/inverter-c1bf7cde.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-dc4e356a.js"),["assets/counter-dc4e356a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-0748897a.js"),["assets/inverter-0748897a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-c06281fa.js"),["assets/device-c06281fa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-066b9c17.js"),["assets/inverter-066b9c17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-862fe547.js"),["assets/bat-862fe547.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-4b4b6fcb.js"),["assets/counter-4b4b6fcb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-c53f4fbf.js"),["assets/inverter-c53f4fbf.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-816bc001.js"),["assets/counter-816bc001.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-012c416a.js"),["assets/inverter-012c416a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-8d465039.js"),["assets/bat-8d465039.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-0a70ba4e.js"),["assets/counter-0a70ba4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-141492ab.js"),["assets/inverter-141492ab.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-ce75f78c.js"),["assets/bat-ce75f78c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-9b94bf71.js"),["assets/counter-9b94bf71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-2cb1f91b.js"),["assets/inverter-2cb1f91b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3a522162.js"),["assets/bat-3a522162.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-b860d161.js"),["assets/bat-b860d161.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-c22cfbf7.js"),["assets/counter-c22cfbf7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-142e36fb.js"),["assets/inverter-142e36fb.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-2c2c1739.js"),["assets/bat-2c2c1739.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-26ce225d.js"),["assets/counter-26ce225d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-902f3710.js"),["assets/inverter-902f3710.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1e116570.js"),["assets/inverter-1e116570.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-b60b6e4a.js"),["assets/counter-b60b6e4a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-4355b01b.js"),["assets/inverter-4355b01b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-d1b5bc9e.js"),["assets/counter-d1b5bc9e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-25c50f0a.js"),["assets/inverter-25c50f0a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-a812139b.js"),["assets/bat-a812139b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-7f35a959.js"),["assets/counter-7f35a959.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-1e818ed4.js"),["assets/inverter-1e818ed4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-0dc7df81.js"),["assets/bat-0dc7df81.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d3d1ea3f.js"),["assets/counter-d3d1ea3f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-e4d3cc40.js"),["assets/inverter-e4d3cc40.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-ec186c85.js"),["assets/bat-ec186c85.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-9fa50fa7.js"),["assets/bat-9fa50fa7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-8e5b4e19.js"),["assets/counter-8e5b4e19.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-ebb193da.js"),["assets/inverter-ebb193da.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b9602155.js"),["assets/counter-b9602155.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-0b0f0c4e.js"),["assets/counter-0b0f0c4e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-1e83ea2a.js"),["assets/inverter-1e83ea2a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-0365f283.js"),["assets/bat-0365f283.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-16962a36.js"),["assets/bat_smart_energy-16962a36.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-058092d9.js"),["assets/counter-058092d9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-3b02f789.js"),["assets/device-3b02f789.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c0f415.js"),["assets/inverter-44c0f415.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-552bb794.js"),["assets/bat-552bb794.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-9fe0373f.js"),["assets/inverter-9fe0373f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-dc28491c.js"),["assets/counter-dc28491c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-3e75383d.js"),["assets/inverter-3e75383d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-56fdc27e.js"),["assets/counter-56fdc27e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-f9804b26.js"),["assets/counter-f9804b26.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-127bad9a.js"),["assets/inverter-127bad9a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-2df223d5.js"),["assets/counter-2df223d5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-a66f1636.js"),["assets/inverter-a66f1636.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-e9bd65aa.js"),["assets/bat-e9bd65aa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-15317c83.js"),["assets/counter-15317c83.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-9f25c7b8.js"),["assets/inverter-9f25c7b8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-746d0e2d.js"),["assets/counter-746d0e2d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-cbe3f201.js"),["assets/inverter-cbe3f201.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-8e5275f9.js"),["assets/bat-8e5275f9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-5643a400.js"),["assets/counter-5643a400.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-266d661e.js"),["assets/external_inverter-266d661e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-b1fa892a.js"),["assets/inverter-b1fa892a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-6a774d77.js"),["assets/bat-6a774d77.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-5378e193.js"),["assets/inverter-5378e193.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-5027e2dc.js"),["assets/bat-5027e2dc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-4bfdc2cd.js"),["assets/counter-4bfdc2cd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-eff782b7.js"),["assets/inverter-eff782b7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-747ec82c.js"),["assets/bat-747ec82c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-02f588be.js"),["assets/counter-02f588be.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-e45e304e.js"),["assets/inverter-e45e304e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-9cf99a8b.js"),["assets/bat-9cf99a8b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-40527e01.js"),["assets/inverter-40527e01.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-c86a746f.js"),["assets/bat-c86a746f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-f1ea356e.js"),["assets/counter-f1ea356e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2c84b24e.js"),["assets/device-2c84b24e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-766499df.js"),["assets/inverter-766499df.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-5952b75a.js"),["assets/inverter-5952b75a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-96b30c95.js"),["assets/bat-96b30c95.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-35296ab7.js"),["assets/counter-35296ab7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-238294f2.js"),["assets/inverter-238294f2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-2f620f71.js"),["assets/bat_api-2f620f71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-1de28157.js"),["assets/bat_modbus-1de28157.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-81355be8.js"),["assets/counter-81355be8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-05d57853.js"),["assets/bat-05d57853.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-cc16dae8.js"),["assets/counter-cc16dae8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-7ff062ac.js"),["assets/inverter-7ff062ac.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-347ba16d.js"),["assets/counter-347ba16d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-9db9f949.js"),["assets/counter-9db9f949.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-2cf514ef.js"),["assets/inverter-2cf514ef.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-5231c6c2.js"),["assets/inverter-5231c6c2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-3875053c.js"),["assets/device-3875053c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c1fd6c65.js"),["assets/device-c1fd6c65.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-6b61f10b.js"),["assets/device-6b61f10b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-c35af9f0.js"),["assets/device-c35af9f0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-8ad58e8f.js"),["assets/device-8ad58e8f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-e1c1fe17.js"),["assets/device-e1c1fe17.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c492c79f.js"),["assets/device-c492c79f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-4b441c71.js"),["assets/device-4b441c71.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-81cfe576.js"),["assets/device-81cfe576.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-0afef9f8.js"),["assets/device-0afef9f8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-edfb92e7.js"),["assets/device-edfb92e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-c6d8e75d.js"),["assets/device-c6d8e75d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-f0707a59.js"),["assets/device-f0707a59.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-47e73557.js"),["assets/device-47e73557.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-39d25848.js"),["assets/device-39d25848.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-c06281fa.js"),["assets/device-c06281fa.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-0e74116d.js"),["assets/device-0e74116d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5a0ee5e7.js"),["assets/device-5a0ee5e7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-2078311b.js"),["assets/device-2078311b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-a276a5e8.js"),["assets/device-a276a5e8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-78972dd5.js"),["assets/device-78972dd5.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-e04c8431.js"),["assets/device-e04c8431.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-f915e9e1.js"),["assets/device-f915e9e1.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0d55c208.js"),["assets/device-0d55c208.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-18559536.js"),["assets/device-18559536.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-227fe008.js"),["assets/device-227fe008.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-51726464.js"),["assets/device-51726464.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-e7707776.js"),["assets/device-e7707776.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-6f67126a.js"),["assets/device-6f67126a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a211281f.js"),["assets/device-a211281f.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-c8f59f1c.js"),["assets/device-c8f59f1c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-5ae4acfc.js"),["assets/device-5ae4acfc.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-d36a7958.js"),["assets/device-d36a7958.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-3b02f789.js"),["assets/device-3b02f789.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-43fe3974.js"),["assets/device-43fe3974.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-6bc81270.js"),["assets/device-6bc81270.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-a5d80d29.js"),["assets/device-a5d80d29.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-61765b74.js"),["assets/device-61765b74.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-258d34d8.js"),["assets/device-258d34d8.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e0c91363.js"),["assets/device-e0c91363.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cbfffa6e.js"),["assets/device-cbfffa6e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-1e5af3ea.js"),["assets/device-1e5af3ea.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-84ee9f0e.js"),["assets/device-84ee9f0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-1f86752d.js"),["assets/device-1f86752d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-198215c0.js"),["assets/device-198215c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-79231634.js"),["assets/device-79231634.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-2120f8c0.js"),["assets/device-2120f8c0.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2c84b24e.js"),["assets/device-2c84b24e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-0fcb1898.js"),["assets/device-0fcb1898.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-48b6056d.js"),["assets/device-48b6056d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-fc73a673.js"),["assets/device-fc73a673.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-d4c2290d.js"),["assets/device-d4c2290d.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-7c1416ae.js"),["assets/device-7c1416ae.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-dbb2dc55.js"),["assets/device-dbb2dc55.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-4a9aeedd.js"),["assets/device-4a9aeedd.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-05d4f732.js b/web/settings/assets/InstantChargeConfig-3082d56a.js similarity index 84% rename from web/settings/assets/InstantChargeConfig-05d4f732.js rename to web/settings/assets/InstantChargeConfig-3082d56a.js index 2167328f12..e30366f26f 100644 --- a/web/settings/assets/InstantChargeConfig-05d4f732.js +++ b/web/settings/assets/InstantChargeConfig-3082d56a.js @@ -1 +1 @@ -import{C as l}from"./index-7f257223.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-ff24c9c8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-0aa17b31.js b/web/settings/assets/LegalSettings-42f245ba.js similarity index 84% rename from web/settings/assets/LegalSettings-0aa17b31.js rename to web/settings/assets/LegalSettings-42f245ba.js index 67736214eb..0c3bf241f0 100644 --- a/web/settings/assets/LegalSettings-0aa17b31.js +++ b/web/settings/assets/LegalSettings-42f245ba.js @@ -1 +1 @@ -import{C as g}from"./index-7f257223.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-ff24c9c8.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-bbe234ca.js b/web/settings/assets/LoadManagementConfig-463c13a8.js similarity index 95% rename from web/settings/assets/LoadManagementConfig-bbe234ca.js rename to web/settings/assets/LoadManagementConfig-463c13a8.js index a5db62f363..008a4054fe 100644 --- a/web/settings/assets/LoadManagementConfig-bbe234ca.js +++ b/web/settings/assets/LoadManagementConfig-463c13a8.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-396ff0d4.js";import{C as $}from"./index-7f257223.js";import{S as x}from"./OpenwbSortableList-db92c83c.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-ff24c9c8.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-152c967f.js b/web/settings/assets/MqttBridgeConfig-87575327.js similarity index 95% rename from web/settings/assets/MqttBridgeConfig-152c967f.js rename to web/settings/assets/MqttBridgeConfig-87575327.js index 24454df203..b190ed391b 100644 --- a/web/settings/assets/MqttBridgeConfig-152c967f.js +++ b/web/settings/assets/MqttBridgeConfig-87575327.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-396ff0d4.js";import{C as D}from"./index-7f257223.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-ff24c9c8.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OpenwbSortableList-db92c83c.js b/web/settings/assets/OpenwbSortableList-7d137bb0.js similarity index 96% rename from web/settings/assets/OpenwbSortableList-db92c83c.js rename to web/settings/assets/OpenwbSortableList-7d137bb0.js index 7c1d7b57d3..718a810c55 100644 --- a/web/settings/assets/OpenwbSortableList-db92c83c.js +++ b/web/settings/assets/OpenwbSortableList-7d137bb0.js @@ -1,4 +1,4 @@ -import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-6e5b23b4.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-396ff0d4.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` +import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-59c39d33.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-532a6e75.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` [a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-8212a288.js"),["assets/displayTheme-8212a288.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-ff24c9c8.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-ff24c9c8.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-3d69a67b.js b/web/settings/assets/ScheduledChargeConfig-e9950f4c.js similarity index 85% rename from web/settings/assets/ScheduledChargeConfig-3d69a67b.js rename to web/settings/assets/ScheduledChargeConfig-e9950f4c.js index 5fd15108aa..8ee8105ecc 100644 --- a/web/settings/assets/ScheduledChargeConfig-3d69a67b.js +++ b/web/settings/assets/ScheduledChargeConfig-e9950f4c.js @@ -1 +1 @@ -import{C as g}from"./index-7f257223.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-ff24c9c8.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-5b447ae3.js b/web/settings/assets/Status-ea1fbcc9.js similarity index 98% rename from web/settings/assets/Status-5b447ae3.js rename to web/settings/assets/Status-ea1fbcc9.js index c8f87753c3..7b50e7bd94 100644 --- a/web/settings/assets/Status-5b447ae3.js +++ b/web/settings/assets/Status-ea1fbcc9.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-396ff0d4.js";import{C as H}from"./index-7f257223.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-ff24c9c8.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-6b29d3b0.js b/web/settings/assets/Support-bd862382.js similarity index 94% rename from web/settings/assets/Support-6b29d3b0.js rename to web/settings/assets/Support-bd862382.js index aa9f363dca..ef7b638202 100644 --- a/web/settings/assets/Support-6b29d3b0.js +++ b/web/settings/assets/Support-bd862382.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-396ff0d4.js";import{C as B}from"./index-7f257223.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-ff24c9c8.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-57179bf7.js b/web/settings/assets/System-86742d64.js similarity index 97% rename from web/settings/assets/System-57179bf7.js rename to web/settings/assets/System-86742d64.js index 7e44affc83..bdc9b04fb5 100644 --- a/web/settings/assets/System-57179bf7.js +++ b/web/settings/assets/System-86742d64.js @@ -1 +1 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-396ff0d4.js";import{C as E}from"./index-7f257223.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-ff24c9c8.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-06f9cd00.js b/web/settings/assets/TestingStore-7adb4368.js similarity index 95% rename from web/settings/assets/TestingStore-06f9cd00.js rename to web/settings/assets/TestingStore-7adb4368.js index 4f5bece42b..2de9d8043c 100644 --- a/web/settings/assets/TestingStore-06f9cd00.js +++ b/web/settings/assets/TestingStore-7adb4368.js @@ -1 +1 @@ -import{C as h}from"./index-7f257223.js";import{S as y}from"./OpenwbSortableList-db92c83c.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-ff24c9c8.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-d8158fc9.js b/web/settings/assets/TimeChargeConfig-72fb7dc8.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-d8158fc9.js rename to web/settings/assets/TimeChargeConfig-72fb7dc8.js index db99e33c7b..d05e07b3ee 100644 --- a/web/settings/assets/TimeChargeConfig-d8158fc9.js +++ b/web/settings/assets/TimeChargeConfig-72fb7dc8.js @@ -1 +1 @@ -import{C as l}from"./index-7f257223.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-6e5b23b4.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-ff24c9c8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-64d2df77.js b/web/settings/assets/VehicleConfig-32bc7a74.js similarity index 94% rename from web/settings/assets/VehicleConfig-64d2df77.js rename to web/settings/assets/VehicleConfig-32bc7a74.js index c575903219..99b02f0e60 100644 --- a/web/settings/assets/VehicleConfig-64d2df77.js +++ b/web/settings/assets/VehicleConfig-32bc7a74.js @@ -1 +1 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-396ff0d4.js";import{_ as S,C as ie}from"./index-7f257223.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-6e5b23b4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";import"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-e76a744b.js"),["assets/vehicle-e76a744b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-e146fe0e.js"),["assets/vehicle-e146fe0e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-4b98a311.js"),["assets/vehicle-4b98a311.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-c5a65e75.js"),["assets/vehicle-c5a65e75.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-e377a977.js"),["assets/vehicle-e377a977.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-7cd93604.js"),["assets/vehicle-7cd93604.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-20cc743a.js"),["assets/vehicle-20cc743a.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-6c139591.js"),["assets/vehicle-6c139591.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-50dd5eb2.js"),["assets/vehicle-50dd5eb2.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-85f19442.js"),["assets/vehicle-85f19442.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-575fb854.js"),["assets/vehicle-575fb854.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-4b3522a6.js"),["assets/vehicle-4b3522a6.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-86f7a224.js","assets/index-7f257223.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-eb74ae86.js"),["assets/vehicle-eb74ae86.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; +import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-ff24c9c8.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-30589088.js"),["assets/vehicle-30589088.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-ff24c9c8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/backup_cloud-b6c73543.js b/web/settings/assets/backup_cloud-b6c73543.js deleted file mode 100644 index bfa2c7b52c..0000000000 --- a/web/settings/assets/backup_cloud-b6c73543.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),y=u("br",null,null,-1),C=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+h(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Authorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backudateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB authorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Authorisierungscode anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),y,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),C,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Authorisierungstokens abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(_,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/backup_cloud-f9884751.js b/web/settings/assets/backup_cloud-e2986e8e.js similarity index 92% rename from web/settings/assets/backup_cloud-f9884751.js rename to web/settings/assets/backup_cloud-e2986e8e.js index 0d3ed3e85f..4c0b1db39f 100644 --- a/web/settings/assets/backup_cloud-f9884751.js +++ b/web/settings/assets/backup_cloud-e2986e8e.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; diff --git a/web/settings/assets/backup_cloud-e42eb0f9.js b/web/settings/assets/backup_cloud-e42eb0f9.js new file mode 100644 index 0000000000..d3cbb2154d --- /dev/null +++ b/web/settings/assets/backup_cloud-e42eb0f9.js @@ -0,0 +1 @@ +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),C=u("br",null,null,-1),y=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB autorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),C,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),y,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/bat-6c7e4549.js b/web/settings/assets/bat-0735bfb3.js similarity index 85% rename from web/settings/assets/bat-6c7e4549.js rename to web/settings/assets/bat-0735bfb3.js index 8637702c3b..eec115e327 100644 --- a/web/settings/assets/bat-6c7e4549.js +++ b/web/settings/assets/bat-0735bfb3.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-e9bd65aa.js b/web/settings/assets/bat-0f0a85bc.js similarity index 86% rename from web/settings/assets/bat-e9bd65aa.js rename to web/settings/assets/bat-0f0a85bc.js index 24cf0bff7b..7db03f6844 100644 --- a/web/settings/assets/bat-e9bd65aa.js +++ b/web/settings/assets/bat-0f0a85bc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-10d8c398.js b/web/settings/assets/bat-10d8c398.js new file mode 100644 index 0000000000..8223b67ba1 --- /dev/null +++ b/web/settings/assets/bat-10d8c398.js @@ -0,0 +1 @@ +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-0dc7df81.js b/web/settings/assets/bat-1761bb8c.js similarity index 85% rename from web/settings/assets/bat-0dc7df81.js rename to web/settings/assets/bat-1761bb8c.js index 1898a9dd68..4d2b101ad0 100644 --- a/web/settings/assets/bat-0dc7df81.js +++ b/web/settings/assets/bat-1761bb8c.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-78371791.js b/web/settings/assets/bat-1edb0ead.js similarity index 85% rename from web/settings/assets/bat-78371791.js rename to web/settings/assets/bat-1edb0ead.js index 4e68b7d5ea..a5918ec61a 100644 --- a/web/settings/assets/bat-78371791.js +++ b/web/settings/assets/bat-1edb0ead.js @@ -1 +1 @@ -import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-2c2c1739.js b/web/settings/assets/bat-2c2c1739.js deleted file mode 100644 index 17e031fee5..0000000000 --- a/web/settings/assets/bat-2c2c1739.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,B,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{D as default}; diff --git a/web/settings/assets/bat-9cf99a8b.js b/web/settings/assets/bat-2cb7fcb7.js similarity index 86% rename from web/settings/assets/bat-9cf99a8b.js rename to web/settings/assets/bat-2cb7fcb7.js index 4b2d50a9ab..24868abeb2 100644 --- a/web/settings/assets/bat-9cf99a8b.js +++ b/web/settings/assets/bat-2cb7fcb7.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-05d57853.js b/web/settings/assets/bat-374aadf3.js similarity index 87% rename from web/settings/assets/bat-05d57853.js rename to web/settings/assets/bat-374aadf3.js index c2bb38bcaf..d6899f5132 100644 --- a/web/settings/assets/bat-05d57853.js +++ b/web/settings/assets/bat-374aadf3.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-747ec82c.js b/web/settings/assets/bat-41d251bc.js similarity index 86% rename from web/settings/assets/bat-747ec82c.js rename to web/settings/assets/bat-41d251bc.js index 780e68b37c..f0645392ac 100644 --- a/web/settings/assets/bat-747ec82c.js +++ b/web/settings/assets/bat-41d251bc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f32f983a.js b/web/settings/assets/bat-4f8ed3c9.js similarity index 94% rename from web/settings/assets/bat-f32f983a.js rename to web/settings/assets/bat-4f8ed3c9.js index 4f4ed48b78..0a0dffcf87 100644 --- a/web/settings/assets/bat-f32f983a.js +++ b/web/settings/assets/bat-4f8ed3c9.js @@ -1 +1 @@ -import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; +import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; diff --git a/web/settings/assets/bat-6a774d77.js b/web/settings/assets/bat-57cb095c.js similarity index 90% rename from web/settings/assets/bat-6a774d77.js rename to web/settings/assets/bat-57cb095c.js index 05b03f06e8..e34faad463 100644 --- a/web/settings/assets/bat-6a774d77.js +++ b/web/settings/assets/bat-57cb095c.js @@ -1 +1 @@ -import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-9fa50fa7.js b/web/settings/assets/bat-5a3aee6e.js similarity index 86% rename from web/settings/assets/bat-9fa50fa7.js rename to web/settings/assets/bat-5a3aee6e.js index 9cd6437f41..fd95429d1f 100644 --- a/web/settings/assets/bat-9fa50fa7.js +++ b/web/settings/assets/bat-5a3aee6e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-7892c6ff.js b/web/settings/assets/bat-701b11a5.js similarity index 86% rename from web/settings/assets/bat-7892c6ff.js rename to web/settings/assets/bat-701b11a5.js index 11bd35fb05..6d7f056add 100644 --- a/web/settings/assets/bat-7892c6ff.js +++ b/web/settings/assets/bat-701b11a5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-862fe547.js b/web/settings/assets/bat-8594bebd.js similarity index 93% rename from web/settings/assets/bat-862fe547.js rename to web/settings/assets/bat-8594bebd.js index 9138399a55..e12c639625 100644 --- a/web/settings/assets/bat-862fe547.js +++ b/web/settings/assets/bat-8594bebd.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; +import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-c86a746f.js b/web/settings/assets/bat-86e9bc80.js similarity index 86% rename from web/settings/assets/bat-c86a746f.js rename to web/settings/assets/bat-86e9bc80.js index fea4a1d17a..0626002506 100644 --- a/web/settings/assets/bat-c86a746f.js +++ b/web/settings/assets/bat-86e9bc80.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-96b30c95.js b/web/settings/assets/bat-94ced6ef.js similarity index 86% rename from web/settings/assets/bat-96b30c95.js rename to web/settings/assets/bat-94ced6ef.js index 1f6bd9f640..5acd924931 100644 --- a/web/settings/assets/bat-96b30c95.js +++ b/web/settings/assets/bat-94ced6ef.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-ec186c85.js b/web/settings/assets/bat-974e5d23.js similarity index 86% rename from web/settings/assets/bat-ec186c85.js rename to web/settings/assets/bat-974e5d23.js index c688cad172..6be248526d 100644 --- a/web/settings/assets/bat-ec186c85.js +++ b/web/settings/assets/bat-974e5d23.js @@ -1 +1 @@ -import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; +import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-3a522162.js b/web/settings/assets/bat-99ab2b7b.js similarity index 61% rename from web/settings/assets/bat-3a522162.js rename to web/settings/assets/bat-99ab2b7b.js index 8759e37e70..8c9d48f03c 100644 --- a/web/settings/assets/bat-3a522162.js +++ b/web/settings/assets/bat-99ab2b7b.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-8d465039.js b/web/settings/assets/bat-9ba92541.js similarity index 85% rename from web/settings/assets/bat-8d465039.js rename to web/settings/assets/bat-9ba92541.js index 0351ddceff..299361a024 100644 --- a/web/settings/assets/bat-8d465039.js +++ b/web/settings/assets/bat-9ba92541.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-b9b268e2.js b/web/settings/assets/bat-9e87a8db.js similarity index 87% rename from web/settings/assets/bat-b9b268e2.js rename to web/settings/assets/bat-9e87a8db.js index 182bc38726..274b288996 100644 --- a/web/settings/assets/bat-b9b268e2.js +++ b/web/settings/assets/bat-9e87a8db.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-e83535a3.js b/web/settings/assets/bat-aaa94877.js similarity index 96% rename from web/settings/assets/bat-e83535a3.js rename to web/settings/assets/bat-aaa94877.js index a5eb78b8e7..00fe921c46 100644 --- a/web/settings/assets/bat-e83535a3.js +++ b/web/settings/assets/bat-aaa94877.js @@ -1 +1 @@ -import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; +import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-8e5275f9.js b/web/settings/assets/bat-ad02ebbd.js similarity index 93% rename from web/settings/assets/bat-8e5275f9.js rename to web/settings/assets/bat-ad02ebbd.js index 5ba66bdebb..1a599a958e 100644 --- a/web/settings/assets/bat-8e5275f9.js +++ b/web/settings/assets/bat-ad02ebbd.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; +import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-bd482ff6.js b/web/settings/assets/bat-c9c9c592.js similarity index 87% rename from web/settings/assets/bat-bd482ff6.js rename to web/settings/assets/bat-c9c9c592.js index 2b26315cdf..f32a1eb37b 100644 --- a/web/settings/assets/bat-bd482ff6.js +++ b/web/settings/assets/bat-c9c9c592.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-552bb794.js b/web/settings/assets/bat-d030cd24.js similarity index 86% rename from web/settings/assets/bat-552bb794.js rename to web/settings/assets/bat-d030cd24.js index f47142cccf..7418c40bdb 100644 --- a/web/settings/assets/bat-552bb794.js +++ b/web/settings/assets/bat-d030cd24.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-56e740de.js b/web/settings/assets/bat-d3c76890.js similarity index 86% rename from web/settings/assets/bat-56e740de.js rename to web/settings/assets/bat-d3c76890.js index 19860a8fa0..fcb3f72202 100644 --- a/web/settings/assets/bat-56e740de.js +++ b/web/settings/assets/bat-d3c76890.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-5027e2dc.js b/web/settings/assets/bat-dc75c3bc.js similarity index 86% rename from web/settings/assets/bat-5027e2dc.js rename to web/settings/assets/bat-dc75c3bc.js index 4344ec61ba..7937b419b6 100644 --- a/web/settings/assets/bat-5027e2dc.js +++ b/web/settings/assets/bat-dc75c3bc.js @@ -1 +1 @@ -import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; +import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-b860d161.js b/web/settings/assets/bat-de9e7863.js similarity index 61% rename from web/settings/assets/bat-b860d161.js rename to web/settings/assets/bat-de9e7863.js index 7a38b1180e..cf06c02ea2 100644 --- a/web/settings/assets/bat-b860d161.js +++ b/web/settings/assets/bat-de9e7863.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{M as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-0365f283.js b/web/settings/assets/bat-e372d758.js similarity index 86% rename from web/settings/assets/bat-0365f283.js rename to web/settings/assets/bat-e372d758.js index bb86e9e93a..12ba090af0 100644 --- a/web/settings/assets/bat-0365f283.js +++ b/web/settings/assets/bat-e372d758.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-a812139b.js b/web/settings/assets/bat-e7a43b7b.js similarity index 86% rename from web/settings/assets/bat-a812139b.js rename to web/settings/assets/bat-e7a43b7b.js index 9d1aea5666..ff455b9147 100644 --- a/web/settings/assets/bat-a812139b.js +++ b/web/settings/assets/bat-e7a43b7b.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-ce75f78c.js b/web/settings/assets/bat-f7664e62.js similarity index 94% rename from web/settings/assets/bat-ce75f78c.js rename to web/settings/assets/bat-f7664e62.js index 5969d3a747..0d8a9b746a 100644 --- a/web/settings/assets/bat-ce75f78c.js +++ b/web/settings/assets/bat-f7664e62.js @@ -1 +1 @@ -import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; +import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-9c4cb66b.js b/web/settings/assets/bat-f89e85e8.js similarity index 86% rename from web/settings/assets/bat-9c4cb66b.js rename to web/settings/assets/bat-f89e85e8.js index ff7a6a9874..4d61e35e01 100644 --- a/web/settings/assets/bat-9c4cb66b.js +++ b/web/settings/assets/bat-f89e85e8.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-34292ed1.js b/web/settings/assets/bat-fe54661f.js similarity index 86% rename from web/settings/assets/bat-34292ed1.js rename to web/settings/assets/bat-fe54661f.js index 80ee10fe98..2da04e8e58 100644 --- a/web/settings/assets/bat-34292ed1.js +++ b/web/settings/assets/bat-fe54661f.js @@ -1 +1 @@ -import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; +import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_api-2f620f71.js b/web/settings/assets/bat_api-83f4eb5d.js similarity index 86% rename from web/settings/assets/bat_api-2f620f71.js rename to web/settings/assets/bat_api-83f4eb5d.js index 97a3c1e3a8..0ea5ac87e0 100644 --- a/web/settings/assets/bat_api-2f620f71.js +++ b/web/settings/assets/bat_api-83f4eb5d.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; +import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_modbus-1de28157.js b/web/settings/assets/bat_modbus-b77c2017.js similarity index 86% rename from web/settings/assets/bat_modbus-1de28157.js rename to web/settings/assets/bat_modbus-b77c2017.js index a8df89b639..c717626317 100644 --- a/web/settings/assets/bat_modbus-1de28157.js +++ b/web/settings/assets/bat_modbus-b77c2017.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_smart_energy-16962a36.js b/web/settings/assets/bat_smart_energy-040c23a4.js similarity index 87% rename from web/settings/assets/bat_smart_energy-16962a36.js rename to web/settings/assets/bat_smart_energy-040c23a4.js index f09d6e5ebf..7a45a71558 100644 --- a/web/settings/assets/bat_smart_energy-16962a36.js +++ b/web/settings/assets/bat_smart_energy-040c23a4.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; diff --git a/web/settings/assets/chargePoint-84db1946.js b/web/settings/assets/chargePoint-33a12343.js similarity index 94% rename from web/settings/assets/chargePoint-84db1946.js rename to web/settings/assets/chargePoint-33a12343.js index 6bfa8eb106..892542c0d2 100644 --- a/web/settings/assets/chargePoint-84db1946.js +++ b/web/settings/assets/chargePoint-33a12343.js @@ -1 +1 @@ -import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; +import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-04c96676.js b/web/settings/assets/chargePoint-651f8f5f.js similarity index 84% rename from web/settings/assets/chargePoint-04c96676.js rename to web/settings/assets/chargePoint-651f8f5f.js index 1c4d0d724b..80e9c0143d 100644 --- a/web/settings/assets/chargePoint-04c96676.js +++ b/web/settings/assets/chargePoint-651f8f5f.js @@ -1 +1 @@ -import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; +import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-83c5fa5d.js b/web/settings/assets/chargePoint-6a041309.js similarity index 92% rename from web/settings/assets/chargePoint-83c5fa5d.js rename to web/settings/assets/chargePoint-6a041309.js index 1908bda98f..68e386cf80 100644 --- a/web/settings/assets/chargePoint-83c5fa5d.js +++ b/web/settings/assets/chargePoint-6a041309.js @@ -1 +1 @@ -import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; +import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-dc724714.js b/web/settings/assets/chargePoint-a0a4acbf.js similarity index 95% rename from web/settings/assets/chargePoint-dc724714.js rename to web/settings/assets/chargePoint-a0a4acbf.js index b0ea471815..535af45d50 100644 --- a/web/settings/assets/chargePoint-dc724714.js +++ b/web/settings/assets/chargePoint-a0a4acbf.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; +import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-10dd26b7.js b/web/settings/assets/chargePoint-c1796cd6.js similarity index 98% rename from web/settings/assets/chargePoint-10dd26b7.js rename to web/settings/assets/chargePoint-c1796cd6.js index 03067af939..98d1627d3f 100644 --- a/web/settings/assets/chargePoint-10dd26b7.js +++ b/web/settings/assets/chargePoint-c1796cd6.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; +import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; diff --git a/web/settings/assets/chargePoint-7389b890.js b/web/settings/assets/chargePoint-fe6ccb61.js similarity index 95% rename from web/settings/assets/chargePoint-7389b890.js rename to web/settings/assets/chargePoint-fe6ccb61.js index 71244dcae3..5668492791 100644 --- a/web/settings/assets/chargePoint-7389b890.js +++ b/web/settings/assets/chargePoint-fe6ccb61.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; +import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/commands-022bb19a.js b/web/settings/assets/commands-0085051f.js similarity index 96% rename from web/settings/assets/commands-022bb19a.js rename to web/settings/assets/commands-0085051f.js index 2f7bb693fa..61e80bb806 100644 --- a/web/settings/assets/commands-022bb19a.js +++ b/web/settings/assets/commands-0085051f.js @@ -1 +1 @@ -import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; +import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-b60b6e4a.js b/web/settings/assets/counter-091a96b7.js similarity index 88% rename from web/settings/assets/counter-b60b6e4a.js rename to web/settings/assets/counter-091a96b7.js index 060a95e3ce..169c01cddd 100644 --- a/web/settings/assets/counter-b60b6e4a.js +++ b/web/settings/assets/counter-091a96b7.js @@ -1 +1 @@ -import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; +import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-8142b909.js b/web/settings/assets/counter-122dd37a.js similarity index 86% rename from web/settings/assets/counter-8142b909.js rename to web/settings/assets/counter-122dd37a.js index ed6dcd0bcd..cc1f609896 100644 --- a/web/settings/assets/counter-8142b909.js +++ b/web/settings/assets/counter-122dd37a.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-746d0e2d.js b/web/settings/assets/counter-1aee48a7.js similarity index 93% rename from web/settings/assets/counter-746d0e2d.js rename to web/settings/assets/counter-1aee48a7.js index c817162536..f714278c6e 100644 --- a/web/settings/assets/counter-746d0e2d.js +++ b/web/settings/assets/counter-1aee48a7.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-4bfdc2cd.js b/web/settings/assets/counter-1dc0e174.js similarity index 86% rename from web/settings/assets/counter-4bfdc2cd.js rename to web/settings/assets/counter-1dc0e174.js index 7f2d8de507..b462db6f1c 100644 --- a/web/settings/assets/counter-4bfdc2cd.js +++ b/web/settings/assets/counter-1dc0e174.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-26ce225d.js b/web/settings/assets/counter-26ce225d.js deleted file mode 100644 index a51d86f1c9..0000000000 --- a/web/settings/assets/counter-26ce225d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,h,B,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const V=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-f1ea356e.js b/web/settings/assets/counter-27a9c2ee.js similarity index 90% rename from web/settings/assets/counter-f1ea356e.js rename to web/settings/assets/counter-27a9c2ee.js index 9f0ad0df19..fa531f9f54 100644 --- a/web/settings/assets/counter-f1ea356e.js +++ b/web/settings/assets/counter-27a9c2ee.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; +import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-ea469ce2.js b/web/settings/assets/counter-29ac2dbe.js similarity index 86% rename from web/settings/assets/counter-ea469ce2.js rename to web/settings/assets/counter-29ac2dbe.js index cf7482fc70..cb630858ae 100644 --- a/web/settings/assets/counter-ea469ce2.js +++ b/web/settings/assets/counter-29ac2dbe.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-5643a400.js b/web/settings/assets/counter-2d2082cf.js similarity index 91% rename from web/settings/assets/counter-5643a400.js rename to web/settings/assets/counter-2d2082cf.js index ba3efa4c05..955761add9 100644 --- a/web/settings/assets/counter-5643a400.js +++ b/web/settings/assets/counter-2d2082cf.js @@ -1 +1 @@ -import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; +import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-dc28491c.js b/web/settings/assets/counter-2d7380c9.js similarity index 87% rename from web/settings/assets/counter-dc28491c.js rename to web/settings/assets/counter-2d7380c9.js index a0ddc6e0a3..d6ab6f1a10 100644 --- a/web/settings/assets/counter-dc28491c.js +++ b/web/settings/assets/counter-2d7380c9.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-9b94bf71.js b/web/settings/assets/counter-2daf569f.js similarity index 96% rename from web/settings/assets/counter-9b94bf71.js rename to web/settings/assets/counter-2daf569f.js index 84835022ad..151098ded5 100644 --- a/web/settings/assets/counter-9b94bf71.js +++ b/web/settings/assets/counter-2daf569f.js @@ -1 +1 @@ -import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; +import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; diff --git a/web/settings/assets/counter-1d0f3892.js b/web/settings/assets/counter-30000cd2.js similarity index 86% rename from web/settings/assets/counter-1d0f3892.js rename to web/settings/assets/counter-30000cd2.js index ace70f6b5f..fa87cef5f1 100644 --- a/web/settings/assets/counter-1d0f3892.js +++ b/web/settings/assets/counter-30000cd2.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-02f588be.js b/web/settings/assets/counter-333c1a6d.js similarity index 87% rename from web/settings/assets/counter-02f588be.js rename to web/settings/assets/counter-333c1a6d.js index f80c6b7a23..5e787bff99 100644 --- a/web/settings/assets/counter-02f588be.js +++ b/web/settings/assets/counter-333c1a6d.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-dc4e356a.js b/web/settings/assets/counter-34bc9327.js similarity index 85% rename from web/settings/assets/counter-dc4e356a.js rename to web/settings/assets/counter-34bc9327.js index a6b6d7754b..d019c2ec26 100644 --- a/web/settings/assets/counter-dc4e356a.js +++ b/web/settings/assets/counter-34bc9327.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-9db9f949.js b/web/settings/assets/counter-36353861.js similarity index 92% rename from web/settings/assets/counter-9db9f949.js rename to web/settings/assets/counter-36353861.js index 7040c62b83..657fa805bb 100644 --- a/web/settings/assets/counter-9db9f949.js +++ b/web/settings/assets/counter-36353861.js @@ -1 +1 @@ -import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; +import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-b9602155.js b/web/settings/assets/counter-373a1c10.js similarity index 86% rename from web/settings/assets/counter-b9602155.js rename to web/settings/assets/counter-373a1c10.js index bb90228341..f2fce3a239 100644 --- a/web/settings/assets/counter-b9602155.js +++ b/web/settings/assets/counter-373a1c10.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; diff --git a/web/settings/assets/counter-ee7b7fc2.js b/web/settings/assets/counter-3aa24e62.js similarity index 85% rename from web/settings/assets/counter-ee7b7fc2.js rename to web/settings/assets/counter-3aa24e62.js index 203501d4ce..372ade3a74 100644 --- a/web/settings/assets/counter-ee7b7fc2.js +++ b/web/settings/assets/counter-3aa24e62.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-c22cfbf7.js b/web/settings/assets/counter-43fc77fa.js similarity index 60% rename from web/settings/assets/counter-c22cfbf7.js rename to web/settings/assets/counter-43fc77fa.js index 92ec092a7d..b7ca430815 100644 --- a/web/settings/assets/counter-c22cfbf7.js +++ b/web/settings/assets/counter-43fc77fa.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const C=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-0b0f0c4e.js b/web/settings/assets/counter-596d7121.js similarity index 89% rename from web/settings/assets/counter-0b0f0c4e.js rename to web/settings/assets/counter-596d7121.js index 483975aaa9..6f8fd2a345 100644 --- a/web/settings/assets/counter-0b0f0c4e.js +++ b/web/settings/assets/counter-596d7121.js @@ -1 +1 @@ -import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; +import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-cd468b50.js b/web/settings/assets/counter-5c24ebc7.js similarity index 86% rename from web/settings/assets/counter-cd468b50.js rename to web/settings/assets/counter-5c24ebc7.js index 262eb8dd44..4748923dea 100644 --- a/web/settings/assets/counter-cd468b50.js +++ b/web/settings/assets/counter-5c24ebc7.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-7f35a959.js b/web/settings/assets/counter-66249572.js similarity index 86% rename from web/settings/assets/counter-7f35a959.js rename to web/settings/assets/counter-66249572.js index 6e30fcfb1e..ed976ef352 100644 --- a/web/settings/assets/counter-7f35a959.js +++ b/web/settings/assets/counter-66249572.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-816bc001.js b/web/settings/assets/counter-6d9b8554.js similarity index 88% rename from web/settings/assets/counter-816bc001.js rename to web/settings/assets/counter-6d9b8554.js index ce944a5267..979fc32228 100644 --- a/web/settings/assets/counter-816bc001.js +++ b/web/settings/assets/counter-6d9b8554.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-ba947ca5.js b/web/settings/assets/counter-74542c06.js similarity index 86% rename from web/settings/assets/counter-ba947ca5.js rename to web/settings/assets/counter-74542c06.js index 91891e506b..89248d9de6 100644 --- a/web/settings/assets/counter-ba947ca5.js +++ b/web/settings/assets/counter-74542c06.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-0a70ba4e.js b/web/settings/assets/counter-8003bfd1.js similarity index 86% rename from web/settings/assets/counter-0a70ba4e.js rename to web/settings/assets/counter-8003bfd1.js index 9fc29b8cbe..bbd2270982 100644 --- a/web/settings/assets/counter-0a70ba4e.js +++ b/web/settings/assets/counter-8003bfd1.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-81355be8.js b/web/settings/assets/counter-836555cd.js similarity index 86% rename from web/settings/assets/counter-81355be8.js rename to web/settings/assets/counter-836555cd.js index eddd887a05..ada99df79b 100644 --- a/web/settings/assets/counter-81355be8.js +++ b/web/settings/assets/counter-836555cd.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-db44398b.js b/web/settings/assets/counter-87037b08.js similarity index 86% rename from web/settings/assets/counter-db44398b.js rename to web/settings/assets/counter-87037b08.js index 6a490e9a6d..2ed4ee4736 100644 --- a/web/settings/assets/counter-db44398b.js +++ b/web/settings/assets/counter-87037b08.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-d3d1ea3f.js b/web/settings/assets/counter-8741a800.js similarity index 85% rename from web/settings/assets/counter-d3d1ea3f.js rename to web/settings/assets/counter-8741a800.js index 1efa48d633..a50d1080c7 100644 --- a/web/settings/assets/counter-d3d1ea3f.js +++ b/web/settings/assets/counter-8741a800.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-87be6226.js b/web/settings/assets/counter-87be6226.js new file mode 100644 index 0000000000..24e643ebe6 --- /dev/null +++ b/web/settings/assets/counter-87be6226.js @@ -0,0 +1 @@ +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,M,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-35296ab7.js b/web/settings/assets/counter-88eb412e.js similarity index 87% rename from web/settings/assets/counter-35296ab7.js rename to web/settings/assets/counter-88eb412e.js index 98e34953f8..fb29c57c41 100644 --- a/web/settings/assets/counter-35296ab7.js +++ b/web/settings/assets/counter-88eb412e.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-d1b5bc9e.js b/web/settings/assets/counter-8fdb9d26.js similarity index 91% rename from web/settings/assets/counter-d1b5bc9e.js rename to web/settings/assets/counter-8fdb9d26.js index 938722c847..b2418bec3d 100644 --- a/web/settings/assets/counter-d1b5bc9e.js +++ b/web/settings/assets/counter-8fdb9d26.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-a17994d5.js b/web/settings/assets/counter-96604727.js similarity index 90% rename from web/settings/assets/counter-a17994d5.js rename to web/settings/assets/counter-96604727.js index 36274c97bd..1325107ca5 100644 --- a/web/settings/assets/counter-a17994d5.js +++ b/web/settings/assets/counter-96604727.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-058092d9.js b/web/settings/assets/counter-9f3c9c7a.js similarity index 86% rename from web/settings/assets/counter-058092d9.js rename to web/settings/assets/counter-9f3c9c7a.js index c756c1bc58..cdac0cce1f 100644 --- a/web/settings/assets/counter-058092d9.js +++ b/web/settings/assets/counter-9f3c9c7a.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; +import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-cef05356.js b/web/settings/assets/counter-b5fad35e.js similarity index 97% rename from web/settings/assets/counter-cef05356.js rename to web/settings/assets/counter-b5fad35e.js index b6bfd37d02..49711f6bce 100644 --- a/web/settings/assets/counter-cef05356.js +++ b/web/settings/assets/counter-b5fad35e.js @@ -1 +1 @@ -import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; +import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-347ba16d.js b/web/settings/assets/counter-bac10632.js similarity index 90% rename from web/settings/assets/counter-347ba16d.js rename to web/settings/assets/counter-bac10632.js index 0a7b61871b..de33854142 100644 --- a/web/settings/assets/counter-347ba16d.js +++ b/web/settings/assets/counter-bac10632.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; +import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-15317c83.js b/web/settings/assets/counter-be7ebe08.js similarity index 86% rename from web/settings/assets/counter-15317c83.js rename to web/settings/assets/counter-be7ebe08.js index 7fedd2ac49..553254853a 100644 --- a/web/settings/assets/counter-15317c83.js +++ b/web/settings/assets/counter-be7ebe08.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-9db02eb0.js b/web/settings/assets/counter-c8a6ec77.js similarity index 96% rename from web/settings/assets/counter-9db02eb0.js rename to web/settings/assets/counter-c8a6ec77.js index 8b5b4043ea..d478b462f9 100644 --- a/web/settings/assets/counter-9db02eb0.js +++ b/web/settings/assets/counter-c8a6ec77.js @@ -1 +1 @@ -import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; +import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-cc16dae8.js b/web/settings/assets/counter-d6b54631.js similarity index 90% rename from web/settings/assets/counter-cc16dae8.js rename to web/settings/assets/counter-d6b54631.js index 2a61049c86..9fbd077e4e 100644 --- a/web/settings/assets/counter-cc16dae8.js +++ b/web/settings/assets/counter-d6b54631.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; +import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-56fdc27e.js b/web/settings/assets/counter-dc035a3e.js similarity index 86% rename from web/settings/assets/counter-56fdc27e.js rename to web/settings/assets/counter-dc035a3e.js index 8530f7048b..29a2299749 100644 --- a/web/settings/assets/counter-56fdc27e.js +++ b/web/settings/assets/counter-dc035a3e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-f29aec2b.js b/web/settings/assets/counter-e3b8a3fa.js similarity index 86% rename from web/settings/assets/counter-f29aec2b.js rename to web/settings/assets/counter-e3b8a3fa.js index c6f2ff8aa1..54ee581a8a 100644 --- a/web/settings/assets/counter-f29aec2b.js +++ b/web/settings/assets/counter-e3b8a3fa.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-2df223d5.js b/web/settings/assets/counter-e44eee41.js similarity index 86% rename from web/settings/assets/counter-2df223d5.js rename to web/settings/assets/counter-e44eee41.js index 7cc6ecfa40..c2cf10570e 100644 --- a/web/settings/assets/counter-2df223d5.js +++ b/web/settings/assets/counter-e44eee41.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-4b4b6fcb.js b/web/settings/assets/counter-e9ec98c5.js similarity index 89% rename from web/settings/assets/counter-4b4b6fcb.js rename to web/settings/assets/counter-e9ec98c5.js index 77b770a23c..e5272b040f 100644 --- a/web/settings/assets/counter-4b4b6fcb.js +++ b/web/settings/assets/counter-e9ec98c5.js @@ -1 +1 @@ -import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-ebca198b.js b/web/settings/assets/counter-ebca198b.js new file mode 100644 index 0000000000..a1ae631168 --- /dev/null +++ b/web/settings/assets/counter-ebca198b.js @@ -0,0 +1 @@ +import{_ as u,p as r,k as c,l as d,A as s,L as a,u as e,q as o,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},m={class:"device-solar_log-counter"},h={class:"small"},f=o("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),o("br")],-1),g=o("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(t,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",m,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),o("span",h,"(Modul: "+p(t.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[f,e(" 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 "),g,e(". ")]),_:1})])}const x=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-75067630.js b/web/settings/assets/counter-f3278b0c.js similarity index 88% rename from web/settings/assets/counter-75067630.js rename to web/settings/assets/counter-f3278b0c.js index 34f63c4096..13acad6b55 100644 --- a/web/settings/assets/counter-75067630.js +++ b/web/settings/assets/counter-f3278b0c.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; diff --git a/web/settings/assets/counter-f9804b26.js b/web/settings/assets/counter-f9804b26.js deleted file mode 100644 index 4ef0b35edb..0000000000 --- a/web/settings/assets/counter-f9804b26.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c,p as s,k as u,l as p,A as r,L as a,u as t,q as e,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},m={class:"device-solar_log-counter"},f={class:"small"},g=e("span",{class:"text-danger"},[t(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),e("br")],-1),h=e("a",{href:"https://github.com/openWB/core/pull/934/files",target:"_blank",rel:"noopener noreferrer"}," https://github.com/openWB/core/pull/934/files ",-1);function b(o,n,v,k,w,B){const i=s("openwb-base-heading"),l=s("openwb-base-alert");return u(),p("div",m,[r(i,null,{default:a(()=>[t(" Einstellungen für Solar-Log Zähler "),e("span",f,"(Modul: "+d(o.$options.name)+")",1)]),_:1}),r(l,{subtype:"info"},{default:a(()=>[g,t(" 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 hier: "),h]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-8e5b4e19.js b/web/settings/assets/counter-fa32a0cf.js similarity index 86% rename from web/settings/assets/counter-8e5b4e19.js rename to web/settings/assets/counter-fa32a0cf.js index 9376ecab71..eb4971e375 100644 --- a/web/settings/assets/counter-8e5b4e19.js +++ b/web/settings/assets/counter-fa32a0cf.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_s0-55cbf638.js b/web/settings/assets/counter_s0-764584ba.js similarity index 86% rename from web/settings/assets/counter_s0-55cbf638.js rename to web/settings/assets/counter_s0-764584ba.js index 3a71abc701..24b5888094 100644 --- a/web/settings/assets/counter_s0-55cbf638.js +++ b/web/settings/assets/counter_s0-764584ba.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; +import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-b8d44e45.js b/web/settings/assets/counter_sm-ea82381f.js similarity index 96% rename from web/settings/assets/counter_sm-b8d44e45.js rename to web/settings/assets/counter_sm-ea82381f.js index 7727cffe90..ca3c9898f2 100644 --- a/web/settings/assets/counter_sm-b8d44e45.js +++ b/web/settings/assets/counter_sm-ea82381f.js @@ -1 +1 @@ -import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; +import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-d36a7958.js b/web/settings/assets/device-007ca4fb.js similarity index 85% rename from web/settings/assets/device-d36a7958.js rename to web/settings/assets/device-007ca4fb.js index 9ed3e78129..4c5881ca3e 100644 --- a/web/settings/assets/device-d36a7958.js +++ b/web/settings/assets/device-007ca4fb.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-cbfffa6e.js b/web/settings/assets/device-0ac32d64.js similarity index 91% rename from web/settings/assets/device-cbfffa6e.js rename to web/settings/assets/device-0ac32d64.js index 75c3cfd294..89f17db744 100644 --- a/web/settings/assets/device-cbfffa6e.js +++ b/web/settings/assets/device-0ac32d64.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-c1fd6c65.js b/web/settings/assets/device-163e7968.js similarity index 87% rename from web/settings/assets/device-c1fd6c65.js rename to web/settings/assets/device-163e7968.js index 8f4b653504..82221bf000 100644 --- a/web/settings/assets/device-c1fd6c65.js +++ b/web/settings/assets/device-163e7968.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-0fcb1898.js b/web/settings/assets/device-1ae9d038.js similarity index 94% rename from web/settings/assets/device-0fcb1898.js rename to web/settings/assets/device-1ae9d038.js index 5c1d042a7e..351d664fb9 100644 --- a/web/settings/assets/device-0fcb1898.js +++ b/web/settings/assets/device-1ae9d038.js @@ -1 +1 @@ -import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; +import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-5a0ee5e7.js b/web/settings/assets/device-1da87f6d.js similarity index 87% rename from web/settings/assets/device-5a0ee5e7.js rename to web/settings/assets/device-1da87f6d.js index ae09c56c38..3a0efa899d 100644 --- a/web/settings/assets/device-5a0ee5e7.js +++ b/web/settings/assets/device-1da87f6d.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-78972dd5.js b/web/settings/assets/device-217340a2.js similarity index 88% rename from web/settings/assets/device-78972dd5.js rename to web/settings/assets/device-217340a2.js index fa7d27bece..d32877be23 100644 --- a/web/settings/assets/device-78972dd5.js +++ b/web/settings/assets/device-217340a2.js @@ -1 +1 @@ -import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; +import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-2c84b24e.js b/web/settings/assets/device-2637042f.js similarity index 92% rename from web/settings/assets/device-2c84b24e.js rename to web/settings/assets/device-2637042f.js index a1264b78a0..3ab0054166 100644 --- a/web/settings/assets/device-2c84b24e.js +++ b/web/settings/assets/device-2637042f.js @@ -1 +1 @@ -import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; +import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-0d55c208.js b/web/settings/assets/device-2677ebed.js similarity index 89% rename from web/settings/assets/device-0d55c208.js rename to web/settings/assets/device-2677ebed.js index b6868dfed9..37edb97084 100644 --- a/web/settings/assets/device-0d55c208.js +++ b/web/settings/assets/device-2677ebed.js @@ -1 +1 @@ -import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; +import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-a5d80d29.js b/web/settings/assets/device-26d1cd71.js similarity index 89% rename from web/settings/assets/device-a5d80d29.js rename to web/settings/assets/device-26d1cd71.js index 9e0a19b095..38cfd92293 100644 --- a/web/settings/assets/device-a5d80d29.js +++ b/web/settings/assets/device-26d1cd71.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-1e5af3ea.js b/web/settings/assets/device-27f1f947.js similarity index 87% rename from web/settings/assets/device-1e5af3ea.js rename to web/settings/assets/device-27f1f947.js index 8d9580d83d..d2de4398d0 100644 --- a/web/settings/assets/device-1e5af3ea.js +++ b/web/settings/assets/device-27f1f947.js @@ -1 +1 @@ -import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; +import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-0afef9f8.js b/web/settings/assets/device-38cd05bd.js similarity index 89% rename from web/settings/assets/device-0afef9f8.js rename to web/settings/assets/device-38cd05bd.js index a02bfa950f..7b4cfeb778 100644 --- a/web/settings/assets/device-0afef9f8.js +++ b/web/settings/assets/device-38cd05bd.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; +import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-227fe008.js b/web/settings/assets/device-3d5e6b95.js similarity index 88% rename from web/settings/assets/device-227fe008.js rename to web/settings/assets/device-3d5e6b95.js index 3f490263a1..c70f9f0b48 100644 --- a/web/settings/assets/device-227fe008.js +++ b/web/settings/assets/device-3d5e6b95.js @@ -1 +1 @@ -import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; +import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-f915e9e1.js b/web/settings/assets/device-4674babe.js similarity index 85% rename from web/settings/assets/device-f915e9e1.js rename to web/settings/assets/device-4674babe.js index a6efd02532..7ee64aae16 100644 --- a/web/settings/assets/device-f915e9e1.js +++ b/web/settings/assets/device-4674babe.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-3b02f789.js b/web/settings/assets/device-50e6b066.js similarity index 89% rename from web/settings/assets/device-3b02f789.js rename to web/settings/assets/device-50e6b066.js index 7586f17a09..5526c4847d 100644 --- a/web/settings/assets/device-3b02f789.js +++ b/web/settings/assets/device-50e6b066.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-0e74116d.js b/web/settings/assets/device-5eae489e.js similarity index 90% rename from web/settings/assets/device-0e74116d.js rename to web/settings/assets/device-5eae489e.js index b229a36c5f..8e9be8943a 100644 --- a/web/settings/assets/device-0e74116d.js +++ b/web/settings/assets/device-5eae489e.js @@ -1 +1 @@ -import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-2078311b.js b/web/settings/assets/device-658cf7d5.js similarity index 87% rename from web/settings/assets/device-2078311b.js rename to web/settings/assets/device-658cf7d5.js index 4fe552fcbc..e1f889ec61 100644 --- a/web/settings/assets/device-2078311b.js +++ b/web/settings/assets/device-658cf7d5.js @@ -1 +1 @@ -import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; +import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-6b6351d4.js b/web/settings/assets/device-6b6351d4.js new file mode 100644 index 0000000000..62374aecd3 --- /dev/null +++ b/web/settings/assets/device-6b6351d4.js @@ -0,0 +1 @@ +import{_ as p,p as o,k as r,l as c,A as a,L as _,u as m,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function w(t,e,i,x,y,s){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(l,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"Shelly 1pm"},{value:2,text:"Shelly 1pm plus"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-edfb92e7.js b/web/settings/assets/device-711c4142.js similarity index 89% rename from web/settings/assets/device-edfb92e7.js rename to web/settings/assets/device-711c4142.js index efb7a75130..ad2c19fc40 100644 --- a/web/settings/assets/device-edfb92e7.js +++ b/web/settings/assets/device-711c4142.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-4a9aeedd.js b/web/settings/assets/device-774e8229.js similarity index 87% rename from web/settings/assets/device-4a9aeedd.js rename to web/settings/assets/device-774e8229.js index 93fcb5338d..58a9be519e 100644 --- a/web/settings/assets/device-4a9aeedd.js +++ b/web/settings/assets/device-774e8229.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-c8f59f1c.js b/web/settings/assets/device-796f2679.js similarity index 88% rename from web/settings/assets/device-c8f59f1c.js rename to web/settings/assets/device-796f2679.js index 8676c292d5..c79ed7a5bc 100644 --- a/web/settings/assets/device-c8f59f1c.js +++ b/web/settings/assets/device-796f2679.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-c492c79f.js b/web/settings/assets/device-7db846be.js similarity index 89% rename from web/settings/assets/device-c492c79f.js rename to web/settings/assets/device-7db846be.js index fcc94e21ab..7d4f8b59d8 100644 --- a/web/settings/assets/device-c492c79f.js +++ b/web/settings/assets/device-7db846be.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-1f86752d.js b/web/settings/assets/device-7eb7f018.js similarity index 87% rename from web/settings/assets/device-1f86752d.js rename to web/settings/assets/device-7eb7f018.js index 12597460a9..77ed0ab65f 100644 --- a/web/settings/assets/device-1f86752d.js +++ b/web/settings/assets/device-7eb7f018.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-39d25848.js b/web/settings/assets/device-805a57b1.js similarity index 89% rename from web/settings/assets/device-39d25848.js rename to web/settings/assets/device-805a57b1.js index fa6921f4ce..1056e1cfab 100644 --- a/web/settings/assets/device-39d25848.js +++ b/web/settings/assets/device-805a57b1.js @@ -1 +1 @@ -import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; +import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-e04c8431.js b/web/settings/assets/device-81fa6cad.js similarity index 85% rename from web/settings/assets/device-e04c8431.js rename to web/settings/assets/device-81fa6cad.js index d83337b5db..a9aac097b4 100644 --- a/web/settings/assets/device-e04c8431.js +++ b/web/settings/assets/device-81fa6cad.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-18559536.js b/web/settings/assets/device-8c005647.js similarity index 85% rename from web/settings/assets/device-18559536.js rename to web/settings/assets/device-8c005647.js index 5ee7dfbaeb..df95ef67a0 100644 --- a/web/settings/assets/device-18559536.js +++ b/web/settings/assets/device-8c005647.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-5ae4acfc.js b/web/settings/assets/device-8d3984b8.js similarity index 89% rename from web/settings/assets/device-5ae4acfc.js rename to web/settings/assets/device-8d3984b8.js index 2e2190bf76..6f68314a6e 100644 --- a/web/settings/assets/device-5ae4acfc.js +++ b/web/settings/assets/device-8d3984b8.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-fc73a673.js b/web/settings/assets/device-8eeabc14.js similarity index 87% rename from web/settings/assets/device-fc73a673.js rename to web/settings/assets/device-8eeabc14.js index cf750f0ebe..f3e5130c3a 100644 --- a/web/settings/assets/device-fc73a673.js +++ b/web/settings/assets/device-8eeabc14.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-c06281fa.js b/web/settings/assets/device-91bdc917.js similarity index 91% rename from web/settings/assets/device-c06281fa.js rename to web/settings/assets/device-91bdc917.js index 8d5f666c76..89f6bd1619 100644 --- a/web/settings/assets/device-c06281fa.js +++ b/web/settings/assets/device-91bdc917.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; +import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-79231634.js b/web/settings/assets/device-9507155a.js similarity index 95% rename from web/settings/assets/device-79231634.js rename to web/settings/assets/device-9507155a.js index d7a785caa6..904fc8e9db 100644 --- a/web/settings/assets/device-79231634.js +++ b/web/settings/assets/device-9507155a.js @@ -1 +1 @@ -import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; +import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-4b441c71.js b/web/settings/assets/device-97a184d3.js similarity index 95% rename from web/settings/assets/device-4b441c71.js rename to web/settings/assets/device-97a184d3.js index 2ad8c7a930..a6973f02ae 100644 --- a/web/settings/assets/device-4b441c71.js +++ b/web/settings/assets/device-97a184d3.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-61765b74.js b/web/settings/assets/device-99280bbf.js similarity index 87% rename from web/settings/assets/device-61765b74.js rename to web/settings/assets/device-99280bbf.js index 2ebd543433..1f9f222a02 100644 --- a/web/settings/assets/device-61765b74.js +++ b/web/settings/assets/device-99280bbf.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-84ee9f0e.js b/web/settings/assets/device-a55b29f8.js similarity index 96% rename from web/settings/assets/device-84ee9f0e.js rename to web/settings/assets/device-a55b29f8.js index 054883eed2..0dcf7adaac 100644 --- a/web/settings/assets/device-84ee9f0e.js +++ b/web/settings/assets/device-a55b29f8.js @@ -1 +1 @@ -import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; +import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-6f67126a.js b/web/settings/assets/device-aa08fc7f.js similarity index 86% rename from web/settings/assets/device-6f67126a.js rename to web/settings/assets/device-aa08fc7f.js index 2bb009a18e..1e4fcd9319 100644 --- a/web/settings/assets/device-6f67126a.js +++ b/web/settings/assets/device-aa08fc7f.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-47e73557.js b/web/settings/assets/device-aba64669.js similarity index 89% rename from web/settings/assets/device-47e73557.js rename to web/settings/assets/device-aba64669.js index ea59f31398..068841cb8d 100644 --- a/web/settings/assets/device-47e73557.js +++ b/web/settings/assets/device-aba64669.js @@ -1 +1 @@ -import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; +import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-258d34d8.js b/web/settings/assets/device-ae95c2d3.js similarity index 87% rename from web/settings/assets/device-258d34d8.js rename to web/settings/assets/device-ae95c2d3.js index 3ed5478d2a..fbf3710050 100644 --- a/web/settings/assets/device-258d34d8.js +++ b/web/settings/assets/device-ae95c2d3.js @@ -1 +1 @@ -import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; +import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-dbb2dc55.js b/web/settings/assets/device-b4c7f099.js similarity index 88% rename from web/settings/assets/device-dbb2dc55.js rename to web/settings/assets/device-b4c7f099.js index 2e14fe9705..521b7bde7b 100644 --- a/web/settings/assets/device-dbb2dc55.js +++ b/web/settings/assets/device-b4c7f099.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-a211281f.js b/web/settings/assets/device-b78ab975.js similarity index 87% rename from web/settings/assets/device-a211281f.js rename to web/settings/assets/device-b78ab975.js index 8b7076bd20..695e2c4115 100644 --- a/web/settings/assets/device-a211281f.js +++ b/web/settings/assets/device-b78ab975.js @@ -1 +1 @@ -import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; +import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-a276a5e8.js b/web/settings/assets/device-b9e954eb.js similarity index 89% rename from web/settings/assets/device-a276a5e8.js rename to web/settings/assets/device-b9e954eb.js index 767a601056..5461381fb5 100644 --- a/web/settings/assets/device-a276a5e8.js +++ b/web/settings/assets/device-b9e954eb.js @@ -1 +1 @@ -import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; +import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-198215c0.js b/web/settings/assets/device-bfe71246.js similarity index 90% rename from web/settings/assets/device-198215c0.js rename to web/settings/assets/device-bfe71246.js index 4694eb7d92..734c0abb4c 100644 --- a/web/settings/assets/device-198215c0.js +++ b/web/settings/assets/device-bfe71246.js @@ -1 +1 @@ -import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; +import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-48b6056d.js b/web/settings/assets/device-c7f03dad.js similarity index 90% rename from web/settings/assets/device-48b6056d.js rename to web/settings/assets/device-c7f03dad.js index b0327c3df9..63657e2574 100644 --- a/web/settings/assets/device-48b6056d.js +++ b/web/settings/assets/device-c7f03dad.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; +import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-e1c1fe17.js b/web/settings/assets/device-c7f8802d.js similarity index 86% rename from web/settings/assets/device-e1c1fe17.js rename to web/settings/assets/device-c7f8802d.js index 581718d1fc..d5474e1bb8 100644 --- a/web/settings/assets/device-e1c1fe17.js +++ b/web/settings/assets/device-c7f8802d.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-c6d8e75d.js b/web/settings/assets/device-cbc50bc1.js similarity index 91% rename from web/settings/assets/device-c6d8e75d.js rename to web/settings/assets/device-cbc50bc1.js index 753adbf17a..59db30d11e 100644 --- a/web/settings/assets/device-c6d8e75d.js +++ b/web/settings/assets/device-cbc50bc1.js @@ -1 +1 @@ -import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; +import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-3875053c.js b/web/settings/assets/device-cbdcd521.js similarity index 92% rename from web/settings/assets/device-3875053c.js rename to web/settings/assets/device-cbdcd521.js index 89ab3408e2..83215f29ed 100644 --- a/web/settings/assets/device-3875053c.js +++ b/web/settings/assets/device-cbdcd521.js @@ -1 +1 @@ -import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; +import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-f0707a59.js b/web/settings/assets/device-d3af1afc.js similarity index 87% rename from web/settings/assets/device-f0707a59.js rename to web/settings/assets/device-d3af1afc.js index 80bc330e9c..18222edc2d 100644 --- a/web/settings/assets/device-f0707a59.js +++ b/web/settings/assets/device-d3af1afc.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; +import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/device-6b61f10b.js b/web/settings/assets/device-d70aa0bc.js similarity index 90% rename from web/settings/assets/device-6b61f10b.js rename to web/settings/assets/device-d70aa0bc.js index 04050fdc67..ccd8609f1f 100644 --- a/web/settings/assets/device-6b61f10b.js +++ b/web/settings/assets/device-d70aa0bc.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-6bc81270.js b/web/settings/assets/device-d77016c1.js similarity index 87% rename from web/settings/assets/device-6bc81270.js rename to web/settings/assets/device-d77016c1.js index 5f3f9e85be..d123d14d7d 100644 --- a/web/settings/assets/device-6bc81270.js +++ b/web/settings/assets/device-d77016c1.js @@ -1 +1 @@ -import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; +import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-7c1416ae.js b/web/settings/assets/device-e3c08fb4.js similarity index 85% rename from web/settings/assets/device-7c1416ae.js rename to web/settings/assets/device-e3c08fb4.js index 50d112eb61..4808812b01 100644 --- a/web/settings/assets/device-7c1416ae.js +++ b/web/settings/assets/device-e3c08fb4.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-d4c2290d.js b/web/settings/assets/device-e4295529.js similarity index 87% rename from web/settings/assets/device-d4c2290d.js rename to web/settings/assets/device-e4295529.js index 2342259ee1..e08da8fc42 100644 --- a/web/settings/assets/device-d4c2290d.js +++ b/web/settings/assets/device-e4295529.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-81cfe576.js b/web/settings/assets/device-e48058b2.js similarity index 91% rename from web/settings/assets/device-81cfe576.js rename to web/settings/assets/device-e48058b2.js index af3889c14d..0eb032d434 100644 --- a/web/settings/assets/device-81cfe576.js +++ b/web/settings/assets/device-e48058b2.js @@ -1 +1 @@ -import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; +import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; diff --git a/web/settings/assets/device-e0c91363.js b/web/settings/assets/device-e85a7920.js similarity index 90% rename from web/settings/assets/device-e0c91363.js rename to web/settings/assets/device-e85a7920.js index 900ef34521..e0334709b4 100644 --- a/web/settings/assets/device-e0c91363.js +++ b/web/settings/assets/device-e85a7920.js @@ -1 +1 @@ -import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; +import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-51726464.js b/web/settings/assets/device-ed00b326.js similarity index 89% rename from web/settings/assets/device-51726464.js rename to web/settings/assets/device-ed00b326.js index e20b3707aa..030a62e773 100644 --- a/web/settings/assets/device-51726464.js +++ b/web/settings/assets/device-ed00b326.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-8ad58e8f.js b/web/settings/assets/device-ee213d99.js similarity index 89% rename from web/settings/assets/device-8ad58e8f.js rename to web/settings/assets/device-ee213d99.js index 763af6386c..c428265fc3 100644 --- a/web/settings/assets/device-8ad58e8f.js +++ b/web/settings/assets/device-ee213d99.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-2120f8c0.js b/web/settings/assets/device-f0ead4af.js similarity index 87% rename from web/settings/assets/device-2120f8c0.js rename to web/settings/assets/device-f0ead4af.js index dd842d7129..6dca389e39 100644 --- a/web/settings/assets/device-2120f8c0.js +++ b/web/settings/assets/device-f0ead4af.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-43fe3974.js b/web/settings/assets/device-f7ed291a.js similarity index 87% rename from web/settings/assets/device-43fe3974.js rename to web/settings/assets/device-f7ed291a.js index 61a8e76550..c95c6a143d 100644 --- a/web/settings/assets/device-43fe3974.js +++ b/web/settings/assets/device-f7ed291a.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-c35af9f0.js b/web/settings/assets/device-fd68e523.js similarity index 87% rename from web/settings/assets/device-c35af9f0.js rename to web/settings/assets/device-fd68e523.js index b994e4c46e..e13c12424a 100644 --- a/web/settings/assets/device-c35af9f0.js +++ b/web/settings/assets/device-fd68e523.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; +import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-e7707776.js b/web/settings/assets/device-ff40d8e1.js similarity index 89% rename from web/settings/assets/device-e7707776.js rename to web/settings/assets/device-ff40d8e1.js index 3a749e7e39..c5f4cc362d 100644 --- a/web/settings/assets/device-e7707776.js +++ b/web/settings/assets/device-ff40d8e1.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/displayTheme-8212a288.js b/web/settings/assets/displayTheme-65aaa96a.js similarity index 97% rename from web/settings/assets/displayTheme-8212a288.js rename to web/settings/assets/displayTheme-65aaa96a.js index 13ef76ab58..f2ec60b6d9 100644 --- a/web/settings/assets/displayTheme-8212a288.js +++ b/web/settings/assets/displayTheme-65aaa96a.js @@ -1,4 +1,4 @@ -import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" +import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" [r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-266d661e.js b/web/settings/assets/external_inverter-79f2751a.js similarity index 92% rename from web/settings/assets/external_inverter-266d661e.js rename to web/settings/assets/external_inverter-79f2751a.js index f7bde3627e..46e509d37f 100644 --- a/web/settings/assets/external_inverter-266d661e.js +++ b/web/settings/assets/external_inverter-79f2751a.js @@ -1 +1 @@ -import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; +import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/external_inverter-114e7859.js b/web/settings/assets/external_inverter-fc2cb871.js similarity index 86% rename from web/settings/assets/external_inverter-114e7859.js rename to web/settings/assets/external_inverter-fc2cb871.js index 41303813bf..ab7b57490a 100644 --- a/web/settings/assets/external_inverter-114e7859.js +++ b/web/settings/assets/external_inverter-fc2cb871.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/index-7f257223.js b/web/settings/assets/index-ff24c9c8.js similarity index 87% rename from web/settings/assets/index-7f257223.js rename to web/settings/assets/index-ff24c9c8.js index 72fd16f28c..9935b26f13 100644 --- a/web/settings/assets/index-7f257223.js +++ b/web/settings/assets/index-ff24c9c8.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-6e5b23b4.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import{p as Ee,a as Ae}from"./vendor-axios-86f7a224.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-jquery-921f231b.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-5b447ae3.js"),["assets/Status-5b447ae3.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-5f30bcb4.js"),["assets/ChargeLog-5f30bcb4.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-49b639b4.js"),["assets/Chart-49b639b4.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-5f622c20.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-36423866.js"),["assets/GeneralConfig-36423866.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-56f649f3.js"),["assets/OptionalComponents-56f649f3.js","assets/dynamic-import-helper-be004503.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ac29a689.js"),["assets/GeneralChargeConfig-ac29a689.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-05d4f732.js"),["assets/InstantChargeConfig-05d4f732.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-233c1da7.js"),["assets/PVChargeConfig-233c1da7.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-d8158fc9.js"),["assets/TimeChargeConfig-d8158fc9.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-3d69a67b.js"),["assets/ScheduledChargeConfig-3d69a67b.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-7f988a97.js"),["assets/HardwareInstallation-7f988a97.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-bbe234ca.js"),["assets/LoadManagementConfig-bbe234ca.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-db92c83c.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-47aec5b8.js"),["assets/ChargePointInstallation-47aec5b8.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-64d2df77.js"),["assets/VehicleConfig-64d2df77.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-da9d6c5e.js"),["assets/CloudConfig-da9d6c5e.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-152c967f.js"),["assets/MqttBridgeConfig-152c967f.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-ddbc648b.js"),["assets/DebugConfig-ddbc648b.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-6b29d3b0.js"),["assets/Support-6b29d3b0.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-0aa17b31.js"),["assets/LegalSettings-0aa17b31.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-57179bf7.js"),["assets/System-57179bf7.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8a02aa30.js"),["assets/DataManagement-8a02aa30.js","assets/vendor-fortawesome-396ff0d4.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-06f9cd00.js"),["assets/TestingStore-06f9cd00.js","assets/OpenwbSortableList-db92c83c.js","assets/vendor-6e5b23b4.js","assets/vendor-sortablejs-b3476726.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-396ff0d4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-6c75b4fa.js","assets/vendor-jquery-921f231b.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-86f7a224.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-ea1fbcc9.js"),["assets/Status-ea1fbcc9.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-b9d6370b.js"),["assets/ChargeLog-b9d6370b.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-0a62513c.js"),["assets/Chart-0a62513c.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-4871098e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-a70bba3b.js"),["assets/GeneralConfig-a70bba3b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-ce43ca94.js"),["assets/OptionalComponents-ce43ca94.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-26a2df84.js"),["assets/GeneralChargeConfig-26a2df84.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3082d56a.js"),["assets/InstantChargeConfig-3082d56a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-2ffbdec7.js"),["assets/PVChargeConfig-2ffbdec7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-72fb7dc8.js"),["assets/TimeChargeConfig-72fb7dc8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-e9950f4c.js"),["assets/ScheduledChargeConfig-e9950f4c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-193acb85.js"),["assets/HardwareInstallation-193acb85.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-463c13a8.js"),["assets/LoadManagementConfig-463c13a8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-c38ea51d.js"),["assets/ChargePointInstallation-c38ea51d.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-32bc7a74.js"),["assets/VehicleConfig-32bc7a74.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-dd687549.js"),["assets/CloudConfig-dd687549.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-87575327.js"),["assets/MqttBridgeConfig-87575327.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-c383ba34.js"),["assets/DebugConfig-c383ba34.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-bd862382.js"),["assets/Support-bd862382.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-42f245ba.js"),["assets/LegalSettings-42f245ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-86742d64.js"),["assets/System-86742d64.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-aa9c5920.js"),["assets/DataManagement-aa9c5920.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-7adb4368.js"),["assets/TestingStore-7adb4368.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-5cf7f4ea.js b/web/settings/assets/inverter-00a09c36.js similarity index 86% rename from web/settings/assets/inverter-5cf7f4ea.js rename to web/settings/assets/inverter-00a09c36.js index 43fb6bf88e..e05937a5d2 100644 --- a/web/settings/assets/inverter-5cf7f4ea.js +++ b/web/settings/assets/inverter-00a09c36.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-04c6e1e4.js b/web/settings/assets/inverter-04c6e1e4.js new file mode 100644 index 0000000000..c6048c829d --- /dev/null +++ b/web/settings/assets/inverter-04c6e1e4.js @@ -0,0 +1 @@ +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-c53f4fbf.js b/web/settings/assets/inverter-0769e573.js similarity index 93% rename from web/settings/assets/inverter-c53f4fbf.js rename to web/settings/assets/inverter-0769e573.js index eea18479e8..c566d5a3f3 100644 --- a/web/settings/assets/inverter-c53f4fbf.js +++ b/web/settings/assets/inverter-0769e573.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-5231c6c2.js b/web/settings/assets/inverter-106f6b2a.js similarity index 88% rename from web/settings/assets/inverter-5231c6c2.js rename to web/settings/assets/inverter-106f6b2a.js index 7d5d6d6717..1617183fe2 100644 --- a/web/settings/assets/inverter-5231c6c2.js +++ b/web/settings/assets/inverter-106f6b2a.js @@ -1 +1 @@ -import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7b30173d.js b/web/settings/assets/inverter-151fa9c5.js similarity index 86% rename from web/settings/assets/inverter-7b30173d.js rename to web/settings/assets/inverter-151fa9c5.js index 4161f15516..84dce4f5a7 100644 --- a/web/settings/assets/inverter-7b30173d.js +++ b/web/settings/assets/inverter-151fa9c5.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-25c50f0a.js b/web/settings/assets/inverter-1bbefb9c.js similarity index 91% rename from web/settings/assets/inverter-25c50f0a.js rename to web/settings/assets/inverter-1bbefb9c.js index ea2c005d37..4731285318 100644 --- a/web/settings/assets/inverter-25c50f0a.js +++ b/web/settings/assets/inverter-1bbefb9c.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-ebb193da.js b/web/settings/assets/inverter-1bcb55bc.js similarity index 86% rename from web/settings/assets/inverter-ebb193da.js rename to web/settings/assets/inverter-1bcb55bc.js index ec769a4d45..7e14b7af69 100644 --- a/web/settings/assets/inverter-ebb193da.js +++ b/web/settings/assets/inverter-1bcb55bc.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a66f1636.js b/web/settings/assets/inverter-239362ff.js similarity index 89% rename from web/settings/assets/inverter-a66f1636.js rename to web/settings/assets/inverter-239362ff.js index 8d9acea4bf..c0f3b25a9b 100644 --- a/web/settings/assets/inverter-a66f1636.js +++ b/web/settings/assets/inverter-239362ff.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; +import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e45e304e.js b/web/settings/assets/inverter-23c62af1.js similarity index 86% rename from web/settings/assets/inverter-e45e304e.js rename to web/settings/assets/inverter-23c62af1.js index faae925257..23da21c34d 100644 --- a/web/settings/assets/inverter-e45e304e.js +++ b/web/settings/assets/inverter-23c62af1.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-502f629e.js b/web/settings/assets/inverter-26fc0c4d.js similarity index 94% rename from web/settings/assets/inverter-502f629e.js rename to web/settings/assets/inverter-26fc0c4d.js index dd31542d34..9e11086067 100644 --- a/web/settings/assets/inverter-502f629e.js +++ b/web/settings/assets/inverter-26fc0c4d.js @@ -1 +1 @@ -import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; +import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; diff --git a/web/settings/assets/inverter-066b9c17.js b/web/settings/assets/inverter-3067b8de.js similarity index 86% rename from web/settings/assets/inverter-066b9c17.js rename to web/settings/assets/inverter-3067b8de.js index 29e2ef476e..a1fc25e8a8 100644 --- a/web/settings/assets/inverter-066b9c17.js +++ b/web/settings/assets/inverter-3067b8de.js @@ -1 +1 @@ -import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; +import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-3e75383d.js b/web/settings/assets/inverter-33d71d7c.js similarity index 87% rename from web/settings/assets/inverter-3e75383d.js rename to web/settings/assets/inverter-33d71d7c.js index 7ceeb657d9..7ecd763815 100644 --- a/web/settings/assets/inverter-3e75383d.js +++ b/web/settings/assets/inverter-33d71d7c.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-b4097339.js b/web/settings/assets/inverter-3639b6ee.js similarity index 88% rename from web/settings/assets/inverter-b4097339.js rename to web/settings/assets/inverter-3639b6ee.js index 6a3ce6838b..05ee6f6f82 100644 --- a/web/settings/assets/inverter-b4097339.js +++ b/web/settings/assets/inverter-3639b6ee.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-2cf514ef.js b/web/settings/assets/inverter-36547adc.js similarity index 95% rename from web/settings/assets/inverter-2cf514ef.js rename to web/settings/assets/inverter-36547adc.js index 9b62b51dc4..060f8137ae 100644 --- a/web/settings/assets/inverter-2cf514ef.js +++ b/web/settings/assets/inverter-36547adc.js @@ -1 +1 @@ -import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; +import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-0748897a.js b/web/settings/assets/inverter-3849924d.js similarity index 94% rename from web/settings/assets/inverter-0748897a.js rename to web/settings/assets/inverter-3849924d.js index 4bd869058c..791a9d7229 100644 --- a/web/settings/assets/inverter-0748897a.js +++ b/web/settings/assets/inverter-3849924d.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; +import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-1e116570.js b/web/settings/assets/inverter-428bf3c7.js similarity index 60% rename from web/settings/assets/inverter-1e116570.js rename to web/settings/assets/inverter-428bf3c7.js index ce01026b4d..689e641320 100644 --- a/web/settings/assets/inverter-1e116570.js +++ b/web/settings/assets/inverter-428bf3c7.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const M=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{M as default}; +import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-44c0f415.js b/web/settings/assets/inverter-44c42273.js similarity index 96% rename from web/settings/assets/inverter-44c0f415.js rename to web/settings/assets/inverter-44c42273.js index 37a506133a..ce390ecf96 100644 --- a/web/settings/assets/inverter-44c0f415.js +++ b/web/settings/assets/inverter-44c42273.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-a2fbbf7f.js b/web/settings/assets/inverter-47ad48de.js similarity index 90% rename from web/settings/assets/inverter-a2fbbf7f.js rename to web/settings/assets/inverter-47ad48de.js index ee0ee5c23a..01561d6818 100644 --- a/web/settings/assets/inverter-a2fbbf7f.js +++ b/web/settings/assets/inverter-47ad48de.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-5a43761c.js b/web/settings/assets/inverter-5a43761c.js new file mode 100644 index 0000000000..4dc10a4891 --- /dev/null +++ b/web/settings/assets/inverter-5a43761c.js @@ -0,0 +1 @@ +import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-4cef121f.js b/web/settings/assets/inverter-5c832d19.js similarity index 86% rename from web/settings/assets/inverter-4cef121f.js rename to web/settings/assets/inverter-5c832d19.js index a852171a87..9f060f7911 100644 --- a/web/settings/assets/inverter-4cef121f.js +++ b/web/settings/assets/inverter-5c832d19.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-c87e2737.js b/web/settings/assets/inverter-67becac8.js similarity index 86% rename from web/settings/assets/inverter-c87e2737.js rename to web/settings/assets/inverter-67becac8.js index 28c1aba0af..f31a14d1b4 100644 --- a/web/settings/assets/inverter-c87e2737.js +++ b/web/settings/assets/inverter-67becac8.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; +import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-90f3d72b.js b/web/settings/assets/inverter-695b5c53.js similarity index 86% rename from web/settings/assets/inverter-90f3d72b.js rename to web/settings/assets/inverter-695b5c53.js index e16fa1ada9..b27b779c18 100644 --- a/web/settings/assets/inverter-90f3d72b.js +++ b/web/settings/assets/inverter-695b5c53.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-1e83ea2a.js b/web/settings/assets/inverter-6bf21593.js similarity index 90% rename from web/settings/assets/inverter-1e83ea2a.js rename to web/settings/assets/inverter-6bf21593.js index f3b124cf63..8c42d41b58 100644 --- a/web/settings/assets/inverter-1e83ea2a.js +++ b/web/settings/assets/inverter-6bf21593.js @@ -1 +1 @@ -import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; +import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7ff062ac.js b/web/settings/assets/inverter-6f9c66d1.js similarity index 90% rename from web/settings/assets/inverter-7ff062ac.js rename to web/settings/assets/inverter-6f9c66d1.js index ea1c91ce2f..46524a5800 100644 --- a/web/settings/assets/inverter-7ff062ac.js +++ b/web/settings/assets/inverter-6f9c66d1.js @@ -1 +1 @@ -import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-142e36fb.js b/web/settings/assets/inverter-71041bec.js similarity index 60% rename from web/settings/assets/inverter-142e36fb.js rename to web/settings/assets/inverter-71041bec.js index e09afe7c68..0affdb264f 100644 --- a/web/settings/assets/inverter-142e36fb.js +++ b/web/settings/assets/inverter-71041bec.js @@ -1 +1 @@ -import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const M=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{M as default}; +import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-766499df.js b/web/settings/assets/inverter-78f559db.js similarity index 86% rename from web/settings/assets/inverter-766499df.js rename to web/settings/assets/inverter-78f559db.js index f19330a085..f386c68fa0 100644 --- a/web/settings/assets/inverter-766499df.js +++ b/web/settings/assets/inverter-78f559db.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e4d3cc40.js b/web/settings/assets/inverter-7c9d893d.js similarity index 86% rename from web/settings/assets/inverter-e4d3cc40.js rename to web/settings/assets/inverter-7c9d893d.js index e5364c7fee..0711668c70 100644 --- a/web/settings/assets/inverter-e4d3cc40.js +++ b/web/settings/assets/inverter-7c9d893d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-c21d2035.js b/web/settings/assets/inverter-832936bd.js similarity index 86% rename from web/settings/assets/inverter-c21d2035.js rename to web/settings/assets/inverter-832936bd.js index 270f5a15d8..5926302de8 100644 --- a/web/settings/assets/inverter-c21d2035.js +++ b/web/settings/assets/inverter-832936bd.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; +import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-238294f2.js b/web/settings/assets/inverter-89f2126b.js similarity index 86% rename from web/settings/assets/inverter-238294f2.js rename to web/settings/assets/inverter-89f2126b.js index 9038658e01..f31e7ddf8a 100644 --- a/web/settings/assets/inverter-238294f2.js +++ b/web/settings/assets/inverter-89f2126b.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-902f3710.js b/web/settings/assets/inverter-902f3710.js deleted file mode 100644 index f2d2c4bf5b..0000000000 --- a/web/settings/assets/inverter-902f3710.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,h,M,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{D as default}; diff --git a/web/settings/assets/inverter-5952b75a.js b/web/settings/assets/inverter-a15db0a0.js similarity index 86% rename from web/settings/assets/inverter-5952b75a.js rename to web/settings/assets/inverter-a15db0a0.js index 3667ee71e5..14483399cb 100644 --- a/web/settings/assets/inverter-5952b75a.js +++ b/web/settings/assets/inverter-a15db0a0.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-5378e193.js b/web/settings/assets/inverter-a3407794.js similarity index 93% rename from web/settings/assets/inverter-5378e193.js rename to web/settings/assets/inverter-a3407794.js index 7c2d4c7c6d..3f550fa359 100644 --- a/web/settings/assets/inverter-5378e193.js +++ b/web/settings/assets/inverter-a3407794.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-b1fa892a.js b/web/settings/assets/inverter-a6ddec85.js similarity index 93% rename from web/settings/assets/inverter-b1fa892a.js rename to web/settings/assets/inverter-a6ddec85.js index ef63e13708..f158c171cb 100644 --- a/web/settings/assets/inverter-b1fa892a.js +++ b/web/settings/assets/inverter-a6ddec85.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-127bad9a.js b/web/settings/assets/inverter-ac056d1d.js similarity index 86% rename from web/settings/assets/inverter-127bad9a.js rename to web/settings/assets/inverter-ac056d1d.js index 33d1decdad..c5c31e2201 100644 --- a/web/settings/assets/inverter-127bad9a.js +++ b/web/settings/assets/inverter-ac056d1d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-9f25c7b8.js b/web/settings/assets/inverter-b84b910e.js similarity index 86% rename from web/settings/assets/inverter-9f25c7b8.js rename to web/settings/assets/inverter-b84b910e.js index cfd8873a22..c525e55747 100644 --- a/web/settings/assets/inverter-9f25c7b8.js +++ b/web/settings/assets/inverter-b84b910e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-eff782b7.js b/web/settings/assets/inverter-b8fdf4a4.js similarity index 86% rename from web/settings/assets/inverter-eff782b7.js rename to web/settings/assets/inverter-b8fdf4a4.js index 1efc7a67cb..4587cdda05 100644 --- a/web/settings/assets/inverter-eff782b7.js +++ b/web/settings/assets/inverter-b8fdf4a4.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-40527e01.js b/web/settings/assets/inverter-bc58fc73.js similarity index 91% rename from web/settings/assets/inverter-40527e01.js rename to web/settings/assets/inverter-bc58fc73.js index 0d25ca6a93..7071a6d434 100644 --- a/web/settings/assets/inverter-40527e01.js +++ b/web/settings/assets/inverter-bc58fc73.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; diff --git a/web/settings/assets/inverter-c1bf7cde.js b/web/settings/assets/inverter-c3c11140.js similarity index 93% rename from web/settings/assets/inverter-c1bf7cde.js rename to web/settings/assets/inverter-c3c11140.js index d90651cbbd..398238d4d9 100644 --- a/web/settings/assets/inverter-c1bf7cde.js +++ b/web/settings/assets/inverter-c3c11140.js @@ -1 +1 @@ -import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; +import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; diff --git a/web/settings/assets/inverter-1d15d663.js b/web/settings/assets/inverter-d4107377.js similarity index 86% rename from web/settings/assets/inverter-1d15d663.js rename to web/settings/assets/inverter-d4107377.js index bdf7cfa439..b90ea78ff9 100644 --- a/web/settings/assets/inverter-1d15d663.js +++ b/web/settings/assets/inverter-d4107377.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-9fe0373f.js b/web/settings/assets/inverter-d426b124.js similarity index 86% rename from web/settings/assets/inverter-9fe0373f.js rename to web/settings/assets/inverter-d426b124.js index 9d8caebeec..a29ebc9021 100644 --- a/web/settings/assets/inverter-9fe0373f.js +++ b/web/settings/assets/inverter-d426b124.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-141492ab.js b/web/settings/assets/inverter-dfa572d8.js similarity index 86% rename from web/settings/assets/inverter-141492ab.js rename to web/settings/assets/inverter-dfa572d8.js index 1890403275..3db6b50d8a 100644 --- a/web/settings/assets/inverter-141492ab.js +++ b/web/settings/assets/inverter-dfa572d8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-cbe3f201.js b/web/settings/assets/inverter-e06fd605.js similarity index 93% rename from web/settings/assets/inverter-cbe3f201.js rename to web/settings/assets/inverter-e06fd605.js index af525f77dc..b438a6492e 100644 --- a/web/settings/assets/inverter-cbe3f201.js +++ b/web/settings/assets/inverter-e06fd605.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-1e818ed4.js b/web/settings/assets/inverter-e440b330.js similarity index 86% rename from web/settings/assets/inverter-1e818ed4.js rename to web/settings/assets/inverter-e440b330.js index 2e70c46d85..95ae64efc8 100644 --- a/web/settings/assets/inverter-1e818ed4.js +++ b/web/settings/assets/inverter-e440b330.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-2cb1f91b.js b/web/settings/assets/inverter-eee1527f.js similarity index 93% rename from web/settings/assets/inverter-2cb1f91b.js rename to web/settings/assets/inverter-eee1527f.js index 536a7b5ddc..723c93d562 100644 --- a/web/settings/assets/inverter-2cb1f91b.js +++ b/web/settings/assets/inverter-eee1527f.js @@ -1 +1 @@ -import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; +import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-012c416a.js b/web/settings/assets/inverter-ef72abc7.js similarity index 89% rename from web/settings/assets/inverter-012c416a.js rename to web/settings/assets/inverter-ef72abc7.js index 09304b6836..77236ceee3 100644 --- a/web/settings/assets/inverter-012c416a.js +++ b/web/settings/assets/inverter-ef72abc7.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-4355b01b.js b/web/settings/assets/inverter-fabd24ac.js similarity index 86% rename from web/settings/assets/inverter-4355b01b.js rename to web/settings/assets/inverter-fabd24ac.js index 20120750bc..fdb5cb6c83 100644 --- a/web/settings/assets/inverter-4355b01b.js +++ b/web/settings/assets/inverter-fabd24ac.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; +import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/vehicle-e146fe0e.js b/web/settings/assets/vehicle-0b6d061a.js similarity index 90% rename from web/settings/assets/vehicle-e146fe0e.js rename to web/settings/assets/vehicle-0b6d061a.js index d484e08c0c..6ff1830e18 100644 --- a/web/settings/assets/vehicle-e146fe0e.js +++ b/web/settings/assets/vehicle-0b6d061a.js @@ -1 +1 @@ -import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; +import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-4b3522a6.js b/web/settings/assets/vehicle-30589088.js similarity index 94% rename from web/settings/assets/vehicle-4b3522a6.js rename to web/settings/assets/vehicle-30589088.js index ad0b37fb10..b6f09a57b0 100644 --- a/web/settings/assets/vehicle-4b3522a6.js +++ b/web/settings/assets/vehicle-30589088.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-6e5b23b4.js";import{a as y}from"./vendor-axios-86f7a224.js";import{C}from"./index-7f257223.js";import"./vendor-sortablejs-b3476726.js";import"./vendor-fortawesome-396ff0d4.js";import"./vendor-bootstrap-6c75b4fa.js";import"./vendor-jquery-921f231b.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-ff24c9c8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-50dd5eb2.js b/web/settings/assets/vehicle-391df8d0.js similarity index 93% rename from web/settings/assets/vehicle-50dd5eb2.js rename to web/settings/assets/vehicle-391df8d0.js index c186904a04..f98d236dd5 100644 --- a/web/settings/assets/vehicle-50dd5eb2.js +++ b/web/settings/assets/vehicle-391df8d0.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-7cd93604.js b/web/settings/assets/vehicle-4249fcff.js similarity index 95% rename from web/settings/assets/vehicle-7cd93604.js rename to web/settings/assets/vehicle-4249fcff.js index fd95f8339f..803c7cb43e 100644 --- a/web/settings/assets/vehicle-7cd93604.js +++ b/web/settings/assets/vehicle-4249fcff.js @@ -1 +1 @@ -import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; +import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-4b98a311.js b/web/settings/assets/vehicle-56b3de10.js similarity index 91% rename from web/settings/assets/vehicle-4b98a311.js rename to web/settings/assets/vehicle-56b3de10.js index f17a6b3c08..9ddb4d1029 100644 --- a/web/settings/assets/vehicle-4b98a311.js +++ b/web/settings/assets/vehicle-56b3de10.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; +import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-6c139591.js b/web/settings/assets/vehicle-67509117.js similarity index 95% rename from web/settings/assets/vehicle-6c139591.js rename to web/settings/assets/vehicle-67509117.js index 03ee49a7d2..97b35b86e0 100644 --- a/web/settings/assets/vehicle-6c139591.js +++ b/web/settings/assets/vehicle-67509117.js @@ -1 +1 @@ -import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; +import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; diff --git a/web/settings/assets/vehicle-575fb854.js b/web/settings/assets/vehicle-75667aad.js similarity index 91% rename from web/settings/assets/vehicle-575fb854.js rename to web/settings/assets/vehicle-75667aad.js index 4a7f939b3c..ebf206244a 100644 --- a/web/settings/assets/vehicle-575fb854.js +++ b/web/settings/assets/vehicle-75667aad.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-e377a977.js b/web/settings/assets/vehicle-7df8b393.js similarity index 94% rename from web/settings/assets/vehicle-e377a977.js rename to web/settings/assets/vehicle-7df8b393.js index 17e454bf0b..845b81bbfa 100644 --- a/web/settings/assets/vehicle-e377a977.js +++ b/web/settings/assets/vehicle-7df8b393.js @@ -1 +1 @@ -import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; +import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-e76a744b.js b/web/settings/assets/vehicle-a27fc177.js similarity index 91% rename from web/settings/assets/vehicle-e76a744b.js rename to web/settings/assets/vehicle-a27fc177.js index 9d126ba4c7..38516552ed 100644 --- a/web/settings/assets/vehicle-e76a744b.js +++ b/web/settings/assets/vehicle-a27fc177.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-eb74ae86.js b/web/settings/assets/vehicle-b9c60ee5.js similarity index 91% rename from web/settings/assets/vehicle-eb74ae86.js rename to web/settings/assets/vehicle-b9c60ee5.js index 14029bd245..571f5dfcf4 100644 --- a/web/settings/assets/vehicle-eb74ae86.js +++ b/web/settings/assets/vehicle-b9c60ee5.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-c5a65e75.js b/web/settings/assets/vehicle-d1763e7a.js similarity index 93% rename from web/settings/assets/vehicle-c5a65e75.js rename to web/settings/assets/vehicle-d1763e7a.js index 5a99229761..78b28885c3 100644 --- a/web/settings/assets/vehicle-c5a65e75.js +++ b/web/settings/assets/vehicle-d1763e7a.js @@ -1 +1 @@ -import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-20cc743a.js b/web/settings/assets/vehicle-d98ffef7.js similarity index 92% rename from web/settings/assets/vehicle-20cc743a.js rename to web/settings/assets/vehicle-d98ffef7.js index d9435a7876..1c45284b40 100644 --- a/web/settings/assets/vehicle-20cc743a.js +++ b/web/settings/assets/vehicle-d98ffef7.js @@ -1 +1 @@ -import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; +import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-85f19442.js b/web/settings/assets/vehicle-df2230d5.js similarity index 92% rename from web/settings/assets/vehicle-85f19442.js rename to web/settings/assets/vehicle-df2230d5.js index 520a821568..6f35bd66e7 100644 --- a/web/settings/assets/vehicle-85f19442.js +++ b/web/settings/assets/vehicle-df2230d5.js @@ -1 +1 @@ -import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-6e5b23b4.js";import"./vendor-sortablejs-b3476726.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; +import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; diff --git a/web/settings/assets/vendor-59c39d33.js b/web/settings/assets/vendor-59c39d33.js new file mode 100644 index 0000000000..d563139a61 --- /dev/null +++ b/web/settings/assets/vendor-59c39d33.js @@ -0,0 +1,100 @@ +import{r as I4}from"./vendor-sortablejs-1a35b5ad.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},sh={};sh.byteLength=B4;sh.toByteArray=N4;sh.fromByteArray=D4;var Xi=[],ui=[],P4=typeof Uint8Array<"u"?Uint8Array:Array,Ic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,C4=Ic.length;Ca0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function B4(e){var t=Uw(e),r=t[0],i=t[1];return(r+i)*3/4-i}function L4(e,t,r){return(t+r)*3/4-r}function N4(e){var t,r=Uw(e),i=r[0],a=r[1],n=new P4(L4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function k4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function $4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */(function(e){var t=sh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Hw={exports:{}},rr=Hw.exports={},Gi,Yi;function P0(){throw new Error("setTimeout has not been defined")}function C0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=P0}catch{Gi=P0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=C0}catch{Yi=C0}})();function qw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===P0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function F4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===C0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,zo,il=-1;function j4(){!za||!zo||(za=!1,zo.length?In=zo.concat(In):il=-1,In.length&&Ww())}function Ww(){if(!za){var e=qw(j4);za=!0;for(var t=In.length;t;){for(zo=In,In=[];++il1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},Vw=()=>!1,q4=/^on[^a-z]/,Ps=e=>q4.test(e),xl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W4=Object.prototype.hasOwnProperty,wt=(e,t)=>W4.call(e,t),ze=Array.isArray,Jo=e=>Cs(e)==="[object Map]",va=e=>Cs(e)==="[object Set]",fm=e=>Cs(e)==="[object Date]",K4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",fh=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),zw=Object.prototype.toString,Cs=e=>zw.call(e),nv=e=>Cs(e).slice(8,-1),Gw=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),V4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),uh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},z4=/-(\w)/g,Kr=uh(e=>e.replace(z4,(t,r)=>r?r.toUpperCase():"")),G4=/\B([A-Z])/g,Hr=uh(e=>e.replace(G4,"-$1").toLowerCase()),_o=uh(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=uh(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Rl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Al=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let um;const Tl=()=>um||(um=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),Y4="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",Z4=Kn(Y4);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(J4);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===zw||!Qe(e.toString))?JSON.stringify(e,Zw,2):String(e),Zw=(e,t)=>t&&t.__v_isRef?Zw(e,t.value):Jo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:va(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Gw(t)?String(t):t;function Ol(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Ol("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},e2=e=>(e.w&So)>0,t2=e=>(e.n&So)>0,lE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"delete":ze(e)||(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"set":Jo(e)&&c.push(u.get(Qo));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&N0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);N0(sv(m),d)}}function N0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&hm(i,t);for(const i of r)i.computed||hm(i,t)}function hm(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function pE(e,t){var r;return(r=Il.get(e))==null?void 0:r.get(t)}const vE=Kn("__proto__,__v_isRef,__isVue"),n2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),gE=hh(),mE=hh(!1,!0),yE=hh(!0),bE=hh(!0,!0),cm=wE();function wE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ga();const i=lt(this)[t].apply(this,r);return ma(),i}}),e}function _E(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function hh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?c2:h2:t?l2:u2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(cm,a))return Reflect.get(cm,a,n);if(a==="hasOwnProperty")return _E}const c=Reflect.get(i,a,n);return(Uf(a)?n2.has(a):vE(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?lv(c):ya(c):c}}const ME=o2(),SE=o2(!0);function o2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,ch=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=ch(a),c=i?fv:r?cv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",Qo),Reflect.get(e,"size",e)}function dm(e){e=lt(e);const t=lt(this);return ch(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function pm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=ch(r);let n=i.call(r,e);n?f2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function vm(e){const t=lt(this),{has:r,get:i}=ch(t);let a=r.call(t,e);a?f2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function gm(){const e=lt(this),t=e.size!==0,r=Jo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?cv:Wf;return!e&&Tr(c,"iterate",Qo),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Jo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?cv:Wf;return!t&&Tr(n,"iterate",d?L0:Qo),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function OE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[IE,PE,CE,BE]=OE();function dh(e,t){const r=t?e?BE:CE:e?PE:IE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const LE={get:dh(!1,!1)},NE={get:dh(!1,!0)},kE={get:dh(!0,!1)},$E={get:dh(!0,!0)};function f2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 u2=new WeakMap,l2=new WeakMap,h2=new WeakMap,c2=new WeakMap;function DE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function FE(e){return e.__v_skip||!Object.isExtensible(e)?0:DE(nv(e))}function ya(e){return Ln(e)?e:ph(e,!1,a2,LE,u2)}function uv(e){return ph(e,!1,AE,NE,l2)}function lv(e){return ph(e,!0,s2,kE,h2)}function Wa(e){return ph(e,!0,TE,$E,c2)}function ph(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=FE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function hv(e){return El(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?ya(e):e,cv=e=>Rt(e)?lv(e):e;function dv(e){co&&Br&&(e=lt(e),i2(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function vh(e,t){e=lt(e);const r=e.dep;r&&N0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return p2(e,!1)}function d2(e){return p2(e,!0)}function p2(e,t){return Xt(e)?e:new jE(e,t)}class jE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return dv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),vh(this,t))}}function UE(e){vh(e,e.value)}function vo(e){return Xt(e)?e.value:e}function HE(e){return Qe(e)?e():vo(e)}const qE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function pv(e){return po(e)?e:new Proxy(e,qE)}class WE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>dv(this),()=>vh(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function KE(e){return new WE(e)}function VE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=v2(e,r);return t}class zE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pE(lt(this._object),this._key)}}class GE{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function YE(e,t,r){return Xt(e)?e:Qe(e)?new GE(e):Rt(e)&&arguments.length>1?v2(e,t,r):mr(e)}function v2(e,t,r){const i=e[t];return Xt(i)?i:new zE(e,t,r)}class ZE{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,vh(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return dv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function XE(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new ZE(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ea=[];function Tf(e){ea.push(e)}function Of(){ea.pop()}function Ue(e,...t){ga();const r=ea.length?ea[ea.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=JE();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Rh(r,n.type)}>`).join(` +`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(` +`,...QE(a)),console.warn(...n)}ma()}function JE(){let e=ea[ea.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function QE(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[` +`],...e8(r))}),t}function e8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Rh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...t8(e.props),n]:[a+n]}function t8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...g2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function g2(e,t,r){return Vt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:Xt(t)?(t=g2(e,lt(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=lt(t),r?t:[`${e}=`,t])}function vv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const gv={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. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function en(e,t,r,i){let a;try{a=i?e(...i):e()}catch(n){ba(n,t,r)}return a}function Zr(e,t,r,i){if(Qe(e)){const n=en(e,t,r,i);return n&&fh(n)&&n.catch(u=>{ba(u,t,r)}),n}const a=[];for(let n=0;n>>1;Vf(Er[i])Ji&&Er.splice(t,1)}function gh(e){ze(e)?Ya.push(...e):(!zi||!zi.includes(e,e.allowRecurse?io+1:io))&&Ya.push(e),y2()}function mm(e,t=Kf?Ji+1:0){for(e=e||new Map;tVf(r)-Vf(i)),io=0;ioe.id==null?1/0:e.id,a8=(e,t)=>{const r=Vf(e)-Vf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function b2(e){k0=!1,Kf=!0,e=e||new Map,Er.sort(a8);const t=r=>yv(e,r);try{for(Ji=0;Jii8){const i=t.ownerInstance,a=i&&Xf(i.type);return Ue(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. 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.`),!0}else e.set(t,r+1)}}let go=!1;const ja=new Set;Tl().__VUE_HMR_RUNTIME__={createRecord:Pc(w2),rerender:Pc(u8),reload:Pc(l8)};const aa=new Map;function s8(e){const t=e.type.__hmrId;let r=aa.get(t);r||(w2(t,e.type),r=aa.get(t)),r.instances.add(e)}function f8(e){aa.get(e.type.__hmrId).instances.delete(e)}function w2(e,t){return aa.has(e)?!1:(aa.set(e,{initialDef:If(t),instances:new Set}),!0)}function If(e){return p_(e)?e.__vccOpts:e}function u8(e,t){const r=aa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,If(i.type).render=t),i.renderCache=[],go=!0,i.update(),go=!1}))}function l8(e,t){const r=aa.get(e);if(!r)return;t=If(t),ym(r.initialDef,t);const i=[...r.instances];for(const a of i){const n=If(a.type);ja.has(n)||(n!==r.initialDef&&ym(n,t),ja.add(n)),a.appContext.propsCache.delete(a.type),a.appContext.emitsCache.delete(a.type),a.appContext.optionsCache.delete(a.type),a.ceReload?(ja.add(n),a.ceReload(t.styles),ja.delete(n)):a.parent?lu(a.parent.update):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}gh(()=>{for(const a of i)ja.delete(If(a.type))})}function ym(e,t){Pt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Pc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bi,wf=[],$0=!1;function hu(e,...t){Bi?Bi.emit(e,...t):$0||wf.push({event:e,args:t})}function bv(e,t){var r,i;Bi=e,Bi?(Bi.enabled=!0,wf.forEach(({event:a,args:n})=>Bi.emit(a,...n)),wf=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{bv(n,t)}),setTimeout(()=>{Bi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,$0=!0,wf=[])},3e3)):($0=!0,wf=[])}function h8(e,t){hu("app:init",e,t,{Fragment:Lt,Text:xo,Comment:tr,Static:mo})}function c8(e){hu("app:unmount",e)}const D0=wv("component:added"),_2=wv("component:updated"),d8=wv("component:removed"),p8=e=>{Bi&&typeof Bi.cleanupBuffer=="function"&&!Bi.cleanupBuffer(e)&&d8(e)};function wv(e){return t=>{hu(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const v8=M2("perf:start"),g8=M2("perf:end");function M2(e){return(t,r,i)=>{hu(e,t.appContext.app,t.uid,t,r,i)}}function m8(e,t,r){hu("component:emit",e.appContext.app,e,t,r)}function y8(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||$t;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(xn(t)in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${xn(t)}" prop.`);else{const R=M[t];Qe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),u=n&&t.slice(7);if(u&&u in i){const M=`${u==="modelValue"?"model":u}Modifiers`,{number:S,trim:R}=i[M]||$t;R&&(a=r.map(C=>Vt(C)?C.trim():C)),S&&(a=r.map(Rl))}m8(e,t,a);{const M=t.toLowerCase();M!==t&&i[xn(M)]&&Ue(`Event "${M}" is emitted in component ${Rh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Hr(t)}" instead of "${t}".`)}let c,d=i[c=xn(t)]||i[c=xn(Kr(t))];!d&&n&&(d=i[c=xn(Hr(t))]),d&&Zr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Zr(m,e,6,a)}}function S2(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let u={},c=!1;if(!Qe(e)){const d=m=>{const M=S2(m,t,!0);M&&(c=!0,Pt(u,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>u[d]=null):Pt(u,n),Rt(e)&&i.set(e,u),u)}function mh(e,t){return!e||!Ps(t)?!1:(t=t.slice(2).replace(/Once$/,""),wt(e,t[0].toLowerCase()+t.slice(1))||wt(e,Hr(t))||wt(e,t))}let er=null,yh=null;function zf(e){const t=er;return er=e,yh=e&&e.type.__scopeId||null,t}function x2(e){yh=e}function E2(){yh=null}const b8=e=>_v;function _v(e,t=er,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&z0(-1);const n=zf(t);let u;try{u=e(...a)}finally{zf(n),i._d&&z0(1)}return _2(t),u};return i._n=!0,i._c=!0,i._d=!0,i}let F0=!1;function Cl(){F0=!0}function nl(e){const{type:t,vnode:r,proxy:i,withProxy:a,props:n,propsOptions:[u],slots:c,attrs:d,emit:m,render:M,renderCache:S,data:R,setupState:C,ctx:P,inheritAttrs:k}=e;let L,I;const B=zf(e);F0=!1;try{if(r.shapeFlag&4){const W=a||i;L=Ur(M.call(W,W,S,n,C,R,P)),I=d}else{const W=t;d===n&&Cl(),L=Ur(W.length>1?W(n,{get attrs(){return Cl(),d},slots:c,emit:m}):W(n,null)),I=t.props?d:_8(d)}}catch(W){Bf.length=0,ba(W,e,1),L=Zt(tr)}let H=L,F;if(L.patchFlag>0&&L.patchFlag&2048&&([H,F]=w8(L)),I&&k!==!1){const W=Object.keys(I),{shapeFlag:Y}=H;if(W.length){if(Y&7)u&&W.some(xl)&&(I=M8(I,u)),H=di(H,I);else if(!F0&&H.type!==tr){const ie=Object.keys(d),J=[],V=[];for(let oe=0,_=ie.length;oe<_;oe++){const o=ie[oe];Ps(o)?xl(o)||J.push(o[2].toLowerCase()+o.slice(3)):V.push(o)}V.length&&Ue(`Extraneous non-props attributes (${V.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(bm(H)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),H=di(H),H.dirs=H.dirs?H.dirs.concat(r.dirs):r.dirs),r.transition&&(bm(H)||Ue("Component inside renders non-element root node that cannot be animated."),H.transition=r.transition),F?F(H):L=H,zf(B),L}const w8=e=>{const t=e.children,r=e.dynamicChildren,i=Mv(t);if(!i)return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,u=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Ur(i),u]};function Mv(e){let t;for(let r=0;r{let t;for(const r in e)(r==="class"||r==="style"||Ps(r))&&((t||(t={}))[r]=e[r]);return t},M8=(e,t)=>{const r={};for(const i in e)(!xl(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},bm=e=>e.shapeFlag&7||e.type===tr;function S8(e,t,r){const{props:i,children:a,component:n}=e,{props:u,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&go||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?wm(i,u,m):!!u;if(d&8){const M=t.dynamicProps;for(let S=0;Se.__isSuspense,x8={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,u,c,d,m){e==null?R8(t,r,i,a,n,u,c,d,m):A8(e,t,r,i,a,u,c,d,m)},hydrate:T8,create:xv,normalize:O8},E8=x8;function Gf(e,t){const r=e.props&&e.props[t];Qe(r)&&r()}function R8(e,t,r,i,a,n,u,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=xv(e,a,i,t,S,r,n,u,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,u),R.deps>0?(Gf(e,"onPending"),Gf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,u),Za(R,e.ssFallback)):R.resolve(!1,!0)}function A8(e,t,r,i,a,n,u,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,C=t.ssFallback,{activeBranch:P,pendingBranch:k,isInFallback:L,isHydrating:I}=S;if(k)S.pendingBranch=R,Li(R,k)?(d(k,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():L&&(d(P,C,r,i,a,null,n,u,c),Za(S,C))):(S.pendingId++,I?(S.isHydrating=!1,S.activeBranch=k):m(k,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():(d(P,C,r,i,a,null,n,u,c),Za(S,C))):P&&Li(R,P)?(d(P,R,r,i,a,S,n,u,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0&&S.resolve()));else if(P&&Li(R,P))d(P,R,r,i,a,S,n,u,c),Za(S,R);else if(Gf(t,"onPending"),S.pendingBranch=R,S.pendingId++,d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0)S.resolve();else{const{timeout:B,pendingId:H}=S;B>0?setTimeout(()=>{S.pendingId===H&&S.fallback(C)},B):B===0&&S.fallback(C)}}let _m=!1;function xv(e,t,r,i,a,n,u,c,d,m,M=!1){_m||(_m=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:S,m:R,um:C,n:P,o:{parentNode:k,remove:L}}=m;let I;const B=I8(e);B&&t!=null&&t.pendingBranch&&(I=t.pendingId,t.deps++);const H=e.props?Al(e.props.timeout):void 0;vv(H,"Suspense timeout");const F={vnode:e,parent:t,parentComponent:r,isSVG:u,container:i,hiddenContainer:a,anchor:n,deps:0,pendingId:0,timeout:typeof H=="number"?H:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:M,isUnmounted:!1,effects:[],resolve(W=!1,Y=!1){{if(!W&&!F.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(F.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:ie,activeBranch:J,pendingBranch:V,pendingId:oe,effects:_,parentComponent:o,container:f}=F;if(F.isHydrating)F.isHydrating=!1;else if(!W){const p=J&&V.transition&&V.transition.mode==="out-in";p&&(J.transition.afterLeave=()=>{oe===F.pendingId&&R(V,f,w,0)});let{anchor:w}=F;J&&(w=P(J),C(J,o,F,!0)),p||R(V,f,w,0)}Za(F,V),F.pendingBranch=null,F.isInFallback=!1;let l=F.parent,h=!1;for(;l;){if(l.pendingBranch){l.effects.push(..._),h=!0;break}l=l.parent}h||gh(_),F.effects=[],B&&t&&t.pendingBranch&&I===t.pendingId&&(t.deps--,t.deps===0&&!Y&&t.resolve()),Gf(ie,"onResolve")},fallback(W){if(!F.pendingBranch)return;const{vnode:Y,activeBranch:ie,parentComponent:J,container:V,isSVG:oe}=F;Gf(Y,"onFallback");const _=P(ie),o=()=>{F.isInFallback&&(S(null,W,V,_,J,null,oe,c,d),Za(F,W))},f=W.transition&&W.transition.mode==="out-in";f&&(ie.transition.afterLeave=o),F.isInFallback=!0,C(ie,J,null,!0),f||o()},move(W,Y,ie){F.activeBranch&&R(F.activeBranch,W,Y,ie),F.container=W},next(){return F.activeBranch&&P(F.activeBranch)},registerDep(W,Y){const ie=!!F.pendingBranch;ie&&F.deps++;const J=W.vnode.el;W.asyncDep.catch(V=>{ba(V,W,0)}).then(V=>{if(W.isUnmounted||F.isUnmounted||F.pendingId!==W.suspenseId)return;W.asyncResolved=!0;const{vnode:oe}=W;Tf(oe),Z0(W,V,!1),J&&(oe.el=J);const _=!J&&W.subTree.el;Y(W,oe,k(J||W.subTree.el),J?null:P(W.subTree),F,u,d),_&&L(_),Sv(W,oe.el),Of(),ie&&--F.deps===0&&F.resolve()})},unmount(W,Y){F.isUnmounted=!0,F.activeBranch&&C(F.activeBranch,r,W,Y),F.pendingBranch&&C(F.pendingBranch,r,W,Y)}};return F}function T8(e,t,r,i,a,n,u,c,d){const m=t.suspense=xv(t,i,r,e.parentNode,document.createElement("div"),null,a,n,u,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,u);return m.deps===0&&m.resolve(!1,!0),M}function O8(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=Mm(i?r.default:r),e.ssFallback=i?Mm(r.fallback):Zt(tr)}function Mm(e){let t;if(Qe(e)){const r=fa&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Wr,i_())}if(ze(e)){const r=Mv(e);r||Ue(" slots expect a single root node."),e=r}return e=Ur(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function A2(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):gh(e)}function Za(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e,a=r.el=t.el;i&&i.subTree===r&&(i.vnode.el=a,Sv(i,a))}function I8(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function T2(e,t){return cu(e,null,t)}function O2(e,t){return cu(e,null,Pt({},t,{flush:"post"}))}function P8(e,t){return cu(e,null,Pt({},t,{flush:"sync"}))}const qu={};function lr(e,t,r){return Qe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),cu(e,t,r)}function cu(e,t,{immediate:r,deep:i,flush:a,onTrack:n,onTrigger:u}=$t){var c;t||(r!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const d=W=>{Ue("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=Qw()===((c=Qt)==null?void 0:c.scope)?Qt:null;let M,S=!1,R=!1;if(Xt(e)?(M=()=>e.value,S=Hf(e)):po(e)?(M=()=>e,i=!0):ze(e)?(R=!0,S=e.some(W=>po(W)||Hf(W)),M=()=>e.map(W=>{if(Xt(W))return W.value;if(po(W))return Go(W);if(Qe(W))return en(W,m,2);d(W)})):Qe(e)?t?M=()=>en(e,m,2):M=()=>{if(!(m&&m.isUnmounted))return C&&C(),Zr(e,m,3,[P])}:(M=qr,d(e)),t&&i){const W=M;M=()=>Go(W())}let C,P=W=>{C=H.onStop=()=>{en(W,m,4)}},k;if(fs)if(P=qr,t?r&&Zr(t,m,3,[M(),R?[]:void 0,P]):M(),a==="sync"){const W=g_();k=W.__watcherHandles||(W.__watcherHandles=[])}else return qr;let L=R?new Array(e.length).fill(qu):qu;const I=()=>{if(H.active)if(t){const W=H.run();(i||S||(R?W.some((Y,ie)=>as(Y,L[ie])):as(W,L)))&&(C&&C(),Zr(t,m,3,[W,L===qu?void 0:R&&L[0]===qu?[]:L,P]),L=W)}else H.run()};I.allowRecurse=!!t;let B;a==="sync"?B=I:a==="post"?B=()=>gr(I,m&&m.suspense):(I.pre=!0,m&&(I.id=m.uid),B=()=>lu(I));const H=new uu(M,B);H.onTrack=n,H.onTrigger=u,t?r?I():L=H.run():a==="post"?gr(H.run.bind(H),m&&m.suspense):H.run();const F=()=>{H.stop(),m&&m.scope&&iv(m.scope.effects,H)};return k&&k.push(F),F}function C8(e,t,r){const i=this.proxy,a=Vt(e)?e.includes(".")?I2(i,e):()=>i[e]:e.bind(i,i);let n;Qe(t)?n=t:(n=t.handler,r=t);const u=Qt;Eo(this);const c=cu(a,n.bind(i),r);return u?Eo(u):yo(),c}function I2(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a{Go(r,t)});else if(Gw(e))for(const r in e)Go(e[r],t);return e}function P2(e){V4(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function ol(e,t){const r=er;if(r===null)return Ue("withDirectives can only be used inside render functions."),e;const i=Eh(r)||r.proxy,a=e.dirs||(e.dirs=[]);for(let n=0;n{e.isMounted=!0}),Mh(()=>{e.isUnmounting=!0}),e}const ni=[Function,Array],Rv={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ni,onEnter:ni,onAfterEnter:ni,onEnterCancelled:ni,onBeforeLeave:ni,onLeave:ni,onAfterLeave:ni,onLeaveCancelled:ni,onBeforeAppear:ni,onAppear:ni,onAfterAppear:ni,onAppearCancelled:ni},B8={name:"BaseTransition",props:Rv,setup(e,{slots:t}){const r=Fi(),i=Ev();let a;return()=>{const n=t.default&&bh(t.default(),!0);if(!n||!n.length)return;let u=n[0];if(n.length>1){let k=!1;for(const L of n)if(L.type!==tr){if(k){Ue(" can only be used on a single element or component. Use for lists.");break}u=L,k=!0}}const c=lt(e),{mode:d}=c;if(d&&d!=="in-out"&&d!=="out-in"&&d!=="default"&&Ue(`invalid mode: ${d}`),i.isLeaving)return Cc(u);const m=Sm(u);if(!m)return Cc(u);const M=ss(m,c,i,r);sa(m,M);const S=r.subTree,R=S&&Sm(S);let C=!1;const{getTransitionKey:P}=m.type;if(P){const k=P();a===void 0?a=k:k!==a&&(a=k,C=!0)}if(R&&R.type!==tr&&(!Li(m,R)||C)){const k=ss(R,c,i,r);if(sa(R,k),d==="out-in")return i.isLeaving=!0,k.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&r.update()},Cc(u);d==="in-out"&&m.type!==tr&&(k.delayLeave=(L,I,B)=>{const H=B2(i,R);H[String(R.key)]=R,L._leaveCb=()=>{I(),L._leaveCb=void 0,delete M.delayedLeave},M.delayedLeave=B})}return u}}},C2=B8;function B2(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ss(e,t,r,i){const{appear:a,mode:n,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:m,onEnterCancelled:M,onBeforeLeave:S,onLeave:R,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:k,onAppear:L,onAfterAppear:I,onAppearCancelled:B}=t,H=String(e.key),F=B2(r,e),W=(J,V)=>{J&&Zr(J,i,9,V)},Y=(J,V)=>{const oe=V[1];W(J,V),ze(J)?J.every(_=>_.length<=1)&&oe():J.length<=1&&oe()},ie={mode:n,persisted:u,beforeEnter(J){let V=c;if(!r.isMounted)if(a)V=k||c;else return;J._leaveCb&&J._leaveCb(!0);const oe=F[H];oe&&Li(e,oe)&&oe.el._leaveCb&&oe.el._leaveCb(),W(V,[J])},enter(J){let V=d,oe=m,_=M;if(!r.isMounted)if(a)V=L||d,oe=I||m,_=B||M;else return;let o=!1;const f=J._enterCb=l=>{o||(o=!0,l?W(_,[J]):W(oe,[J]),ie.delayedLeave&&ie.delayedLeave(),J._enterCb=void 0)};V?Y(V,[J,f]):f()},leave(J,V){const oe=String(e.key);if(J._enterCb&&J._enterCb(!0),r.isUnmounting)return V();W(S,[J]);let _=!1;const o=J._leaveCb=f=>{_||(_=!0,V(),f?W(P,[J]):W(C,[J]),J._leaveCb=void 0,F[oe]===e&&delete F[oe])};F[oe]=e,R?Y(R,[J,o]):o()},clone(J){return ss(J,t,r,i)}};return ie}function Cc(e){if(Ls(e))return e=di(e),e.children=null,e}function Sm(e){return Ls(e)?e.children?e.children[0]:void 0:e}function sa(e,t){e.shapeFlag&6&&e.component?sa(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 bh(e,t=!1,r){let i=[],a=0;for(let n=0;n1)for(let n=0;nPt({name:e.name},t,{setup:e}))():e}const ta=e=>!!e.type.__asyncLoader;function L8(e){Qe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:u=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let C;return d||(C=d=t().catch(P=>{if(P=P instanceof Error?P:new Error(String(P)),c)return new Promise((k,L)=>{c(P,()=>k(S()),()=>L(P),M+1)});throw P}).then(P=>{if(C!==d&&d)return d;if(P||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),P&&(P.__esModule||P[Symbol.toStringTag]==="Module")&&(P=P.default),P&&!Rt(P)&&!Qe(P))throw new Error(`Invalid async component load result: ${P}`);return m=P,P}))};return Bs({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const C=Qt;if(m)return()=>Bc(m,C);const P=B=>{d=null,ba(B,C,13,!i)};if(u&&C.suspense||fs)return R().then(B=>()=>Bc(B,C)).catch(B=>(P(B),()=>i?Zt(i,{error:B}):null));const k=mr(!1),L=mr(),I=mr(!!a);return a&&setTimeout(()=>{I.value=!1},a),n!=null&&setTimeout(()=>{if(!k.value&&!L.value){const B=new Error(`Async component timed out after ${n}ms.`);P(B),L.value=B}},n),R().then(()=>{k.value=!0,C.parent&&Ls(C.parent.vnode)&&lu(C.parent.update)}).catch(B=>{P(B),L.value=B}),()=>{if(k.value&&m)return Bc(m,C);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!I.value)return Zt(r)}}})}function Bc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,u=Zt(e,i,a);return u.ref=r,u.ce=n,delete t.vnode.ce,u}const Ls=e=>e.type.__isKeepAlive,N8={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=Fi(),i=r.ctx;if(!i.renderer)return()=>{const B=t.default&&t.default();return B&&B.length===1?B[0]:B};const a=new Map,n=new Set;let u=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(B,H,F,W,Y)=>{const ie=B.component;m(B,H,F,0,c),d(ie.vnode,B,H,F,ie,c,W,B.slotScopeIds,Y),gr(()=>{ie.isDeactivated=!1,ie.a&&so(ie.a);const J=B.props&&B.props.onVnodeMounted;J&&Dr(J,ie.parent,B)},c),D0(ie)},i.deactivate=B=>{const H=B.component;m(B,R,null,1,c),gr(()=>{H.da&&so(H.da);const F=B.props&&B.props.onVnodeUnmounted;F&&Dr(F,H.parent,B),H.isDeactivated=!0},c),D0(H)};function C(B){Lc(B),M(B,r,c,!0)}function P(B){a.forEach((H,F)=>{const W=Xf(H.type);W&&(!B||!B(W))&&k(F)})}function k(B){const H=a.get(B);!u||!Li(H,u)?C(H):u&&Lc(u),a.delete(B),n.delete(B)}lr(()=>[e.include,e.exclude],([B,H])=>{B&&P(F=>_f(B,F)),H&&P(F=>!_f(H,F))},{flush:"post",deep:!0});let L=null;const I=()=>{L!=null&&a.set(L,Nc(r.subTree))};return Ns(I),_h(I),Mh(()=>{a.forEach(B=>{const{subTree:H,suspense:F}=r,W=Nc(H);if(B.type===W.type&&B.key===W.key){Lc(W);const Y=W.component.da;Y&&gr(Y,F);return}C(B)})}),()=>{if(L=null,!t.default)return null;const B=t.default(),H=B[0];if(B.length>1)return Ue("KeepAlive should contain exactly one component child."),u=null,B;if(!Nn(H)||!(H.shapeFlag&4)&&!(H.shapeFlag&128))return u=null,H;let F=Nc(H);const W=F.type,Y=Xf(ta(F)?F.type.__asyncResolved||{}:W),{include:ie,exclude:J,max:V}=e;if(ie&&(!Y||!_f(ie,Y))||J&&Y&&_f(J,Y))return u=F,H;const oe=F.key==null?W:F.key,_=a.get(oe);return F.el&&(F=di(F),H.shapeFlag&128&&(H.ssContent=F)),L=oe,_?(F.el=_.el,F.component=_.component,F.transition&&sa(F,F.transition),F.shapeFlag|=512,n.delete(oe),n.add(oe)):(n.add(oe),V&&n.size>parseInt(V,10)&&k(n.values().next().value)),F.shapeFlag|=256,u=F,R2(H.type)?H:F}}},k8=N8;function _f(e,t){return ze(e)?e.some(r=>_f(r,t)):Vt(e)?e.split(",").includes(t):K4(e)?e.test(t):!1}function L2(e,t){k2(e,"a",t)}function N2(e,t){k2(e,"da",t)}function k2(e,t,r=Qt){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(wh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Ls(a.parent.vnode)&&$8(i,t,r,a),a=a.parent}}function $8(e,t,r,i){const a=wh(t,e,i,!0);Sh(()=>{iv(i[t],a)},r)}function Lc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Nc(e){return e.shapeFlag&128?e.ssContent:e}function wh(e,t,r=Qt,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...u)=>{if(r.isUnmounted)return;ga(),Eo(r);const c=Zr(t,r,e,u);return yo(),ma(),c});return i?a.unshift(n):a.push(n),n}else{const a=xn(gv[e].replace(/ hook$/,""));Ue(`${a} 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 Vn=e=>(t,r=Qt)=>(!fs||e==="sp")&&wh(e,(...i)=>t(...i),r),$2=Vn("bm"),Ns=Vn("m"),Av=Vn("bu"),_h=Vn("u"),Mh=Vn("bum"),Sh=Vn("um"),D2=Vn("sp"),F2=Vn("rtg"),j2=Vn("rtc");function U2(e,t=Qt){wh("ec",e,t)}const Bl="components",D8="directives";function F8(e,t){return Tv(Bl,e,!0,t)||e}const H2=Symbol.for("v-ndc");function j8(e){return Vt(e)?Tv(Bl,e,!1)||e:e||H2}function U8(e){return Tv(D8,e)}function Tv(e,t,r=!0,i=!1){const a=er||Qt;if(a){const n=a.type;if(e===Bl){const c=Xf(n,!1);if(c&&(c===t||c===Kr(t)||c===_o(Kr(t))))return n}const u=xm(a[e]||n[e],t)||xm(a.appContext[e],t);if(!u&&i)return n;if(r&&!u){const c=e===Bl?` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return u}else Ue(`resolve${_o(e.slice(0,-1))} can only be used in render() or setup().`)}function xm(e,t){return e&&(e[t]||e[Kr(t)]||e[_o(Kr(t))])}function Ii(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||Vt(e)){a=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,n&&n[c]));else{const u=Object.keys(e);a=new Array(u.length);for(let c=0,d=u.length;c{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function j0(e,t,r={},i,a){if(er.isCE||er.parent&&ta(er.parent)&&er.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(Ue("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."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const u=n&&q2(n(r)),c=Cv(Lt,{key:r.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function q2(e){return e.some(t=>Nn(t)?!(t.type===tr||t.type===Lt&&!q2(t.children)):!0)?e:null}function q8(e,t){const r={};if(!Rt(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:xn(i)]=e[i];return r}const U0=e=>e?l_(e)?Eh(e)||e.proxy:U0(e.parent):null,ra=Pt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Wa(e.props),$attrs:e=>Wa(e.attrs),$slots:e=>Wa(e.slots),$refs:e=>Wa(e.refs),$parent:e=>U0(e.parent),$root:e=>U0(e.root),$emit:e=>e.emit,$options:e=>Iv(e),$forceUpdate:e=>e.f||(e.f=()=>lu(e.update)),$nextTick:e=>e.n||(e.n=uo.bind(e.proxy)),$watch:e=>C8.bind(e)}),Ov=e=>e==="_"||e==="$",kc=(e,t)=>e!==$t&&!e.__isScriptSetup&&wt(e,t),Pf={get({_:e},t){const{ctx:r,setupState:i,data:a,props:n,accessCache:u,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const C=u[t];if(C!==void 0)switch(C){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(kc(i,t))return u[t]=1,i[t];if(a!==$t&&wt(a,t))return u[t]=2,a[t];if((m=e.propsOptions[0])&&wt(m,t))return u[t]=3,n[t];if(r!==$t&&wt(r,t))return u[t]=4,r[t];H0&&(u[t]=0)}}const M=ra[t];let S,R;if(M)return t==="$attrs"?(Tr(e,"get",t),Cl()):t==="$slots"&&Tr(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==$t&&wt(r,t))return u[t]=4,r[t];if(R=d.config.globalProperties,wt(R,t))return R[t];er&&(!Vt(t)||t.indexOf("__v")!==0)&&(a!==$t&&Ov(t[0])&&wt(a,t)?Ue(`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===er&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return kc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&wt(a,t)?(Ue(`Cannot mutate - - - - - - + + + + + + + From 21cdf94dd12fe6f6208a1f2a974765e3c6c0ff27 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Tue, 22 Aug 2023 13:43:05 +0200 Subject: [PATCH 079/121] Update packages/modules/common/store/_chargepoint.py Co-authored-by: benderl --- packages/modules/common/store/_chargepoint.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py index 665a938930..422f5be035 100644 --- a/packages/modules/common/store/_chargepoint.py +++ b/packages/modules/common/store/_chargepoint.py @@ -32,6 +32,7 @@ def set(self, state: ChargepointState) -> None: pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/exported", state.exported, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/power", state.power, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/powers", state.powers, 2) + pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/frequency", state.frequency, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/phases_in_use", state.phases_in_use, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charge_state", state.charge_state, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/plug_state", state.plug_state, 2) From 057677a7cec6dc3541dcd564ccba7fc90da9fa05 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 22 Aug 2023 15:01:09 +0200 Subject: [PATCH 080/121] build UI --- .../assets/{ChargeLog-b9d6370b.js => ChargeLog-c1fa84a0.js} | 2 +- ...lation-c38ea51d.js => ChargePointInstallation-ac4eb7c0.js} | 2 +- web/settings/assets/Chart-0a62513c.js | 1 - web/settings/assets/Chart-8b04f805.js | 1 + .../{CloudConfig-dd687549.js => CloudConfig-62c3bc70.js} | 2 +- ...{DataManagement-aa9c5920.js => DataManagement-e6b0bf99.js} | 2 +- .../{DebugConfig-c383ba34.js => DebugConfig-cfeb9017.js} | 2 +- ...argeConfig-26a2df84.js => GeneralChargeConfig-e7f81317.js} | 2 +- .../{GeneralConfig-a70bba3b.js => GeneralConfig-173a411a.js} | 2 +- ...tallation-193acb85.js => HardwareInstallation-ae3c4375.js} | 2 +- ...argeConfig-3082d56a.js => InstantChargeConfig-1957a26d.js} | 2 +- .../{LegalSettings-42f245ba.js => LegalSettings-8d508618.js} | 2 +- ...entConfig-463c13a8.js => LoadManagementConfig-b175e1b1.js} | 2 +- ...tBridgeConfig-87575327.js => MqttBridgeConfig-97b2414e.js} | 2 +- ...lComponents-ce43ca94.js => OptionalComponents-ea25690b.js} | 2 +- ...{PVChargeConfig-2ffbdec7.js => PVChargeConfig-5bf7058a.js} | 2 +- ...geConfig-e9950f4c.js => ScheduledChargeConfig-e30b140f.js} | 2 +- .../assets/{Status-ea1fbcc9.js => Status-73741289.js} | 2 +- .../assets/{Support-bd862382.js => Support-86e0f1ee.js} | 2 +- .../assets/{System-86742d64.js => System-13142ce3.js} | 2 +- .../{TestingStore-7adb4368.js => TestingStore-de474301.js} | 2 +- ...eChargeConfig-72fb7dc8.js => TimeChargeConfig-f11d8cfe.js} | 2 +- .../{VehicleConfig-32bc7a74.js => VehicleConfig-2c445ee2.js} | 2 +- web/settings/assets/{index-ff24c9c8.js => index-451d2d20.js} | 2 +- .../assets/{vehicle-30589088.js => vehicle-39e57c4c.js} | 2 +- ...{vendor-chartjs-4871098e.js => vendor-chartjs-f8e573cd.js} | 4 ++-- web/settings/index.html | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) rename web/settings/assets/{ChargeLog-b9d6370b.js => ChargeLog-c1fa84a0.js} (99%) rename web/settings/assets/{ChargePointInstallation-c38ea51d.js => ChargePointInstallation-ac4eb7c0.js} (99%) delete mode 100644 web/settings/assets/Chart-0a62513c.js create mode 100644 web/settings/assets/Chart-8b04f805.js rename web/settings/assets/{CloudConfig-dd687549.js => CloudConfig-62c3bc70.js} (99%) rename web/settings/assets/{DataManagement-aa9c5920.js => DataManagement-e6b0bf99.js} (99%) rename web/settings/assets/{DebugConfig-c383ba34.js => DebugConfig-cfeb9017.js} (98%) rename web/settings/assets/{GeneralChargeConfig-26a2df84.js => GeneralChargeConfig-e7f81317.js} (97%) rename web/settings/assets/{GeneralConfig-a70bba3b.js => GeneralConfig-173a411a.js} (99%) rename web/settings/assets/{HardwareInstallation-193acb85.js => HardwareInstallation-ae3c4375.js} (99%) rename web/settings/assets/{InstantChargeConfig-3082d56a.js => InstantChargeConfig-1957a26d.js} (96%) rename web/settings/assets/{LegalSettings-42f245ba.js => LegalSettings-8d508618.js} (97%) rename web/settings/assets/{LoadManagementConfig-463c13a8.js => LoadManagementConfig-b175e1b1.js} (99%) rename web/settings/assets/{MqttBridgeConfig-87575327.js => MqttBridgeConfig-97b2414e.js} (99%) rename web/settings/assets/{OptionalComponents-ce43ca94.js => OptionalComponents-ea25690b.js} (99%) rename web/settings/assets/{PVChargeConfig-2ffbdec7.js => PVChargeConfig-5bf7058a.js} (99%) rename web/settings/assets/{ScheduledChargeConfig-e9950f4c.js => ScheduledChargeConfig-e30b140f.js} (97%) rename web/settings/assets/{Status-ea1fbcc9.js => Status-73741289.js} (99%) rename web/settings/assets/{Support-bd862382.js => Support-86e0f1ee.js} (98%) rename web/settings/assets/{System-86742d64.js => System-13142ce3.js} (99%) rename web/settings/assets/{TestingStore-7adb4368.js => TestingStore-de474301.js} (99%) rename web/settings/assets/{TimeChargeConfig-72fb7dc8.js => TimeChargeConfig-f11d8cfe.js} (96%) rename web/settings/assets/{VehicleConfig-32bc7a74.js => VehicleConfig-2c445ee2.js} (99%) rename web/settings/assets/{index-ff24c9c8.js => index-451d2d20.js} (96%) rename web/settings/assets/{vehicle-30589088.js => vehicle-39e57c4c.js} (97%) rename web/settings/assets/{vendor-chartjs-4871098e.js => vendor-chartjs-f8e573cd.js} (99%) diff --git a/web/settings/assets/ChargeLog-b9d6370b.js b/web/settings/assets/ChargeLog-c1fa84a0.js similarity index 99% rename from web/settings/assets/ChargeLog-b9d6370b.js rename to web/settings/assets/ChargeLog-c1fa84a0.js index 36f9ddaa60..5abfb54ea2 100644 --- a/web/settings/assets/ChargeLog-b9d6370b.js +++ b/web/settings/assets/ChargeLog-c1fa84a0.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-ff24c9c8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-451d2d20.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-c38ea51d.js b/web/settings/assets/ChargePointInstallation-ac4eb7c0.js similarity index 99% rename from web/settings/assets/ChargePointInstallation-c38ea51d.js rename to web/settings/assets/ChargePointInstallation-ac4eb7c0.js index 75d030085a..279069a257 100644 --- a/web/settings/assets/ChargePointInstallation-c38ea51d.js +++ b/web/settings/assets/ChargePointInstallation-ac4eb7c0.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-ff24c9c8.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-451d2d20.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-0a62513c.js b/web/settings/assets/Chart-0a62513c.js deleted file mode 100644 index fcfa0efa80..0000000000 --- a/web/settings/assets/Chart-0a62513c.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,J as P,K as k,L as E,M as L,P as M,F as T}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-ff24c9c8.js";import{C as $,p as B,a as z,L as V,b as F,P as N,c as J,T as X,i as Z,d as G,e as U}from"./vendor-chartjs-4871098e.js";import{_ as Y,p as f,k as h,l as m,q as _,A as u,L as g,y as b,z as Q,u as D,G as R,I as C,x as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";W.add(P,k,E,L,M);$.register(B,z,V,F,N,J,X,Z,G);const O={name:"OpenwbChart",components:{ChartjsLine:U,FontAwesomeIcon:T},mixins:[H],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(r){return["day","month"].indexOf(r)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(r){return r.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power":{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-energyImport":{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-energyExport":{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":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power":{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:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energyExport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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:!1,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power":{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",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energyImport":{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:!1,borderWidth:1,data:null,yAxisID:"y2",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":{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-energyImport":{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-energyExport":{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}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:r=>`${r.dataset.label}: ${r.formattedValue} ${r.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 r={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":r={title:"Monat",type:"month",min:"2018-01"};break;case"year":r={title:"Jahr",type:"year",min:"2018"};break}return r},chartDate:{get(){var r=this.chartRequestDate.year;return this.chartRange!="year"&&(r=r+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(r=r+"-"+this.chartRequestDate.day),r},set(r){let i=r.split("-");this.chartRequestDate.year=i[0],i.length>1?this.chartRequestDate.month=i[1]:this.chartRequestDate.month="",i.length>2?this.chartRequestDate.day=i[2]:this.chartRequestDate.day=""}},chartScaleX(){var r={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":r={unit:"day",tooltipFormat:"D",text:"Tag",maxTicksLimit:31};break;case"year":r={unit:"month",tooltipFormat:"M",text:"Monat",maxTicksLimit:12};break}return r},commandData(){var r={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":r={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":r={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return r},baseTopic(){var r="openWB/log/";switch(this.chartRange){case"day":r=r+"daily/";break;case"month":r=r+"monthly/";break;case"year":r=r+"yearly/";break}return r},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]){if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals;{var r={bat:{},counter:{},pv:{},cp:{}};const s=["imported","exported"],l=(d,n,c)=>{const t=c.split(".");s.includes(t[t.length-1])&&(Object.prototype.hasOwnProperty.call(r[t[0]],[t[1]])||(r[t[0]][t[1]]={}),r[t[0]][t[1]][t[2]]=Math.floor(n-d))},a=(d,n,c,t="")=>{for(var e in n)n[e]!==null&&typeof n[e]=="object"?a(d[e],n[e],c,t?t+"."+e:e):c.apply(this,[d[e],n[e],t?t+"."+e:e])};var i=this.$store.state.mqtt[this.baseTopic+this.commandData.date];const o=i[0],p=i[i.length-1];return a(o,p,l),r}}},chartDataObject(){const r=(a,o,p,d,n)=>Math.floor((n-d-(p-o))/(a/1e3/3600))/1e3,i=(a,o)=>(o-a)/1e3;if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var s=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(s,"entries")&&(console.debug("upgraded chart data received"),s=s.entries);var l=JSON.parse(JSON.stringify(s)).map((a,o,p)=>{if(p.length>o+1){const n=p[o+1],c=(n.timestamp-a.timestamp)*1e3;a.timestamp=a.timestamp*1e3;var d=["pv","counter","bat","cp","sh"];return d.forEach(t=>{Object.entries(a[t]).forEach(([e,v])=>{if(a[t][e])if(n[t][e])Object.keys(v).forEach(()=>{switch(t){case"pv":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,0,0,a[t][e].exported,n[t][e].exported),a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"counter":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=Math.floor((n[t][e].imported-a[t][e].imported-(n[t][e].exported-a[t][e].exported))/(c/1e3/3600))/1e3,a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"bat":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"cp":Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break;case"sh":Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].power=r(c,a[t][e].exported,n[t][e].exported,a[t][e].imported,n[t][e].imported),a[t][e].powerImport=Math.max(0,a[t][e].power),a[t][e].powerExport=Math.min(0,a[t][e].power)),Object.prototype.hasOwnProperty.call(n[t][e],"imported")&&Object.prototype.hasOwnProperty.call(a[t][e],"imported")&&(a[t][e].energyImport=i(a[t][e].imported,n[t][e].imported)),Object.prototype.hasOwnProperty.call(n[t][e],"exported")&&Object.prototype.hasOwnProperty.call(a[t][e],"exported")&&(a[t][e].energyExport=i(a[t][e].exported,n[t][e].exported));break}});else return})}),a}else return});return l.pop(),l}},chartData(){if(this.chartDataObject){var r=["pv","counter","bat","cp","sh","ev"];const i=this.chartDataObject[this.chartDataObject.length-1];return i&&r.forEach(s=>{Object.prototype.hasOwnProperty.call(i,s)&&Object.entries(i[s]).forEach(([l,a])=>{Object.keys(a).forEach(o=>{this.initDataset(s,l,o)})})}),this.chartDatasets}}},methods:{getCardSubtype(r){switch(r){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(r){switch(r){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"];default:return}},getDatasetHidden(r,i){return console.debug("getDatasetHidden",r,i),!1},getTotalsLabel(r,i=void 0,s=void 0){var l="*test*";if(!i&&!s){switch(r){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";default:console.warn("unknown group key:",r)}return"*"+r+"*"}if(i&&!s){if(i=="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[i];var a=i.match(/\d+$/),o="";switch(r){case"cp":o="openWB/chargepoint/"+a+"/config";break;case"ev":o="openWB/vehicle/"+a+"/name";break;default:o="openWB/system/device/+/component/"+a+"/config"}var p=Object.keys(this.getWildcardTopics(o))[0];if(p)switch(r){case"pv":return this.$store.state.mqtt[p].name;case"counter":return this.$store.state.mqtt[p].name;case"bat":return this.$store.state.mqtt[p].name;case"cp":return this.$store.state.mqtt[p].name;case"ev":return this.$store.state.mqtt[p];case"sh":return"SmartHome*";default:console.warn("unknown group key:",r)}else console.warn("topic not found for:",r,i);return"+"+r+"+"+i+"+"}if(i&&s){switch(r){case"bat":case"cp":switch(s){case"imported":return"Ladung";case"exported":return"Entladung";default:console.warn("unknown measurement key:",r,s)}break;case"counter":switch(s){case"imported":return"Bezug/Verbrauch";case"exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"pv":switch(s){case"exported":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;case"sh":switch(s){case"imported":case"energyImport":return"Verbrauch";case"exported":case"energyExport":return"Erzeugung";default:console.warn("unknown measurement key:",r,s)}break;default:console.warn("unknown group key:",r)}return"*"+r+"+"+i+"+"+s+"*"}return l},getDatasetLabel(r,i,s,l){var a=["*"+l],o=[];if(i=="all")switch(o.push("Summe"),r){case"pv":a=["PV"];break;case"bat":switch(a=["Speicher"],s){case"soc":a.push("SoC");break}break;case"cp":a=["Ladepunkte"];break}else if(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,i))a=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[i]];else{var p=i.match(/\d+$/),d="";switch(r){case"cp":d="openWB/chargepoint/"+p+"/config";break;case"ev":d="openWB/vehicle/"+p+"/name";break;default:d="openWB/system/device/+/component/"+p+"/config"}var n=Object.keys(this.getWildcardTopics(d))[0];if(n in this.$store.state.mqtt)switch(r){case"pv":a=[this.$store.state.mqtt[n].name];break;case"counter":a=[this.$store.state.mqtt[n].name];break;case"bat":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"cp":switch(a=[this.$store.state.mqtt[n].name],s){case"soc":a.push("SoC");break}break;case"sh":switch(a=[this.$store.state.mqtt[n].name],s){case"temp1":case"temp2":case"temp3":a.push(s.charAt(0).toUpperCase()+s.substring(1));break}break;case"ev":switch(a=[this.$store.state.mqtt[n]],s){case"soc":a.push("SoC");break}break}else console.warn("could not get name for dataset",l)}switch(r){case"bat":case"ev":case"cp":switch(s){case"soc":o.push("SoC");break;case"imported":case"energyImport":o.push("Ladung");break;case"exported":case"energyExport":o.push("Entladung");break}break;case"counter":switch(s){case"imported":case"energyImport":o.push("Bezug/Verbrauch");break;case"exported":case"energyExport":o.push("Einspeisung/Erzeugung");break}break;case"sh":switch(s){case"imported":case"energyImport":o.push("Verbrauch");break;case"exported":case"energyExport":o.push("Erzeugung");break}break}return console.debug("getDatasetLabel",r,i,s,l,"Label:",a,o),`${a.join(" ")}${o.length?" ("+o.join(", ")+")":""}`},getDatasetIndex(r){let i=this.chartDatasets.datasets.findIndex(s=>s.jsonKey==r);if(i!=-1)return i},addDataset(r,i,s,l){console.debug("adding new dataset",r,i,s,l);var a=r+"-"+s;if(this.datasetTemplates[a]){var o=JSON.parse(JSON.stringify(this.datasetTemplates[a]));return o.parsing.yAxisKey=l,o.jsonKey=l,o.data=this.chartDataObject,o.label=this.getDatasetLabel(r,i,s,l),o.labelSuffix!=null&&(o.label=o.label+o.labelSuffix),i=="all"&&(o.hidden=!1),this.chartDatasets.datasets.push(o)-1}else console.warn("no matching template found for: "+l+" with template: "+a)},initDataset(r,i,s){var l=[];this.chartRange=="day"?l=["power","soc"]:l=["energyImport","energyExport"];const a=r+"."+i+"."+s;if(l.includes(s)){var o=this.getDatasetIndex(a);const p=this.getDatasetHidden(r,i);o==null&&!p&&(o=this.addDataset(r,i,s,a)),o!=null&&p&&(console.info("component hidden:",r,i,s,o),this.chartDatasets.datasets.splice(o,1))}},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 i="";switch(this.chartRange){case"day":i="getDailyLog";break;case"month":i="getMonthlyLog";break;case"year":i="getYearlyLog";break}this.$emit("sendCommand",{command:i,data:this.commandData})}else{console.log("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(r=>{this.$store.commit("removeTopic",`${this.baseTopic}${r}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const r=new Date;this.currentDate=String(r.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(r.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(r.getDate()).padStart(2,"0")),this.initialDate==null||this.initialDate==""?(console.log("no initial date for chart found, fallback to today"),this.chartDate=this.currentDate):this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},K={class:"chart"},j={name:"chartForm"},tt={key:1},et={key:1},at={class:"openwb-chart"};function rt(r,i,s,l,a,o){const p=f("openwb-base-select-input"),d=f("openwb-base-text-input"),n=f("openwb-base-card"),c=f("openwb-base-alert"),t=f("chartjs-line"),e=f("font-awesome-icon"),v=f("openwb-base-heading");return h(),m("div",K,[_("form",j,[u(n,{title:"Filter",collapsible:!0,collapsed:!1},{default:g(()=>[u(p,{title:"Zeitraum",modelValue:a.chartRange,"onUpdate:modelValue":i[0]||(i[0]=x=>a.chartRange=x),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"}]},null,8,["modelValue"]),Q(" // ToDo: {value:'year', text:'Jahr'} "),u(d,{title:o.dateInput.title,subtype:o.dateInput.type,min:o.dateInput.min,max:a.currentDate,showQuickButtons:!0,modelValue:o.chartDate,"onUpdate:modelValue":[i[1]||(i[1]=x=>o.chartDate=x),i[2]||(i[2]=x=>o.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),o.chartDataRead?(h(),m("div",tt,[o.chartDataHasEntries?(h(),m("div",et,[u(n,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:g(()=>[_("div",at,[u(t,{data:o.chartData,options:a.chartOptions},null,8,["data","options"])])]),_:1}),u(n,{title:"Summen",collapsible:!0,collapsed:!0},{default:g(()=>[(h(!0),m(R,null,C(o.chartTotals,(x,y)=>(h(),b(n,{key:y,collapsible:!0,collapsed:!0,subtype:o.getCardSubtype(y)},{header:g(()=>[u(e,{"fixed-width":"",icon:o.getCardIcon(y)},null,8,["icon"]),D(" "+I(o.getTotalsLabel(y)),1)]),default:g(()=>[(h(!0),m(R,null,C(x,(A,S)=>(h(),m("div",{key:S},[u(v,null,{default:g(()=>[D(I(o.getTotalsLabel(y,S)),1)]),_:2},1024),(h(!0),m(R,null,C(A,(q,w)=>(h(),m("div",{key:w},[u(d,{title:o.getTotalsLabel(y,S,w),readonly:"",class:"text-right",unit:"kWh","model-value":r.formatNumber(q/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(h(),b(c,{key:0,subtype:"info"},{default:g(()=>[D(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const ut=Y(O,[["render",rt],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{ut as default}; diff --git a/web/settings/assets/Chart-8b04f805.js b/web/settings/assets/Chart-8b04f805.js new file mode 100644 index 0000000000..cbc6dae917 --- /dev/null +++ b/web/settings/assets/Chart-8b04f805.js @@ -0,0 +1 @@ +import{l as T,J as W,K as L,L as q,M as O,P as j,F as M}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-451d2d20.js";import{C as E,p as z,a as V,L as B,b as F,P,c as N,T as $,i as J,d as X,e as Z,g as K}from"./vendor-chartjs-f8e573cd.js";import{_ as G,p as u,k as n,l as c,q as v,A as o,L as d,y as f,u as g,G as x,I as k,x as C}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";T.add(W,L,q,O,j);E.register(z,V,B,F,P,N,$,J,X);const U={name:"OpenwbChart",components:{ChartjsLine:Z,FontAwesomeIcon:M},mixins:[H],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=K(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",h="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),h="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=h},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"];default:return}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(t.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}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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},Y={class:"chart"},Q={name:"chartForm"},ee={key:1},te={key:1},ae={class:"openwb-chart"};function re(e,a,r,s,i,t){const l=u("openwb-base-select-input"),h=u("openwb-base-text-input"),b=u("openwb-base-card"),D=u("openwb-base-alert"),R=u("chartjs-line"),w=u("font-awesome-icon"),S=u("openwb-base-heading");return n(),c("div",Y,[v("form",Q,[o(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[o(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=p=>i.chartRange=p),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),o(h,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=p=>t.chartDate=p),a[2]||(a[2]=p=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),c("div",ee,[t.chartDataHasEntries?(n(),c("div",te,[o(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ae,[o(R,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),o(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),c(x,null,k(t.chartTotals,(p,m)=>(n(),f(b,{key:m,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(m)},{header:d(()=>[o(w,{"fixed-width":"",icon:t.getCardIcon(m)},null,8,["icon"]),g(" "+C(t.getTotalsLabel(m)),1)]),default:d(()=>[(n(!0),c(x,null,k(p,(A,y)=>(n(),c("div",{key:y},[o(S,null,{default:d(()=>[g(C(t.getTotalsLabel(m,y)),1)]),_:2},1024),(n(!0),c(x,null,k(A,(I,_)=>(n(),c("div",{key:_},[o(h,{title:t.getTotalsLabel(m,y,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(I/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(n(),f(D,{key:0,subtype:"info"},{default:d(()=>[g(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),f(D,{key:0,subtype:"info"},{default:d(()=>[g(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const pe=G(U,[["render",re],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{pe as default}; diff --git a/web/settings/assets/CloudConfig-dd687549.js b/web/settings/assets/CloudConfig-62c3bc70.js similarity index 99% rename from web/settings/assets/CloudConfig-dd687549.js rename to web/settings/assets/CloudConfig-62c3bc70.js index 811257eedd..d1825bcb0a 100644 --- a/web/settings/assets/CloudConfig-dd687549.js +++ b/web/settings/assets/CloudConfig-62c3bc70.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-ff24c9c8.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e42eb0f9.js"),["assets/backup_cloud-e42eb0f9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; +import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-532a6e75.js";import{_ as D,C as N}from"./index-451d2d20.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e42eb0f9.js"),["assets/backup_cloud-e42eb0f9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-c383ba34.js b/web/settings/assets/DebugConfig-cfeb9017.js similarity index 98% rename from web/settings/assets/DebugConfig-c383ba34.js rename to web/settings/assets/DebugConfig-cfeb9017.js index 8ab87ee212..086fb1bb85 100644 --- a/web/settings/assets/DebugConfig-c383ba34.js +++ b/web/settings/assets/DebugConfig-cfeb9017.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-ff24c9c8.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-451d2d20.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-26a2df84.js b/web/settings/assets/GeneralChargeConfig-e7f81317.js similarity index 97% rename from web/settings/assets/GeneralChargeConfig-26a2df84.js rename to web/settings/assets/GeneralChargeConfig-e7f81317.js index fd4fdd4d66..0443bee0ac 100644 --- a/web/settings/assets/GeneralChargeConfig-26a2df84.js +++ b/web/settings/assets/GeneralChargeConfig-e7f81317.js @@ -1 +1 @@ -import{C as c}from"./index-ff24c9c8.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-451d2d20.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-a70bba3b.js b/web/settings/assets/GeneralConfig-173a411a.js similarity index 99% rename from web/settings/assets/GeneralConfig-a70bba3b.js rename to web/settings/assets/GeneralConfig-173a411a.js index 29de9c6f16..b1da9adf3c 100644 --- a/web/settings/assets/GeneralConfig-a70bba3b.js +++ b/web/settings/assets/GeneralConfig-173a411a.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-ff24c9c8.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-3067b8de.js"),["assets/inverter-3067b8de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-99ab2b7b.js"),["assets/bat-99ab2b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-de9e7863.js"),["assets/bat-de9e7863.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-43fc77fa.js"),["assets/counter-43fc77fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-71041bec.js"),["assets/inverter-71041bec.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-10d8c398.js"),["assets/bat-10d8c398.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-87be6226.js"),["assets/counter-87be6226.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-5a43761c.js"),["assets/inverter-5a43761c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-428bf3c7.js"),["assets/inverter-428bf3c7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-04c6e1e4.js"),["assets/inverter-04c6e1e4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e372d758.js"),["assets/bat-e372d758.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-040c23a4.js"),["assets/bat_smart_energy-040c23a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f3c9c7a.js"),["assets/counter-9f3c9c7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c42273.js"),["assets/inverter-44c42273.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-ebca198b.js"),["assets/counter-ebca198b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; +import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-532a6e75.js";import{_ as e,C as X}from"./index-451d2d20.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-3067b8de.js"),["assets/inverter-3067b8de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-99ab2b7b.js"),["assets/bat-99ab2b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-de9e7863.js"),["assets/bat-de9e7863.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-43fc77fa.js"),["assets/counter-43fc77fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-71041bec.js"),["assets/inverter-71041bec.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-10d8c398.js"),["assets/bat-10d8c398.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-87be6226.js"),["assets/counter-87be6226.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-5a43761c.js"),["assets/inverter-5a43761c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-428bf3c7.js"),["assets/inverter-428bf3c7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-04c6e1e4.js"),["assets/inverter-04c6e1e4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e372d758.js"),["assets/bat-e372d758.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-040c23a4.js"),["assets/bat_smart_energy-040c23a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f3c9c7a.js"),["assets/counter-9f3c9c7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c42273.js"),["assets/inverter-44c42273.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-ebca198b.js"),["assets/counter-ebca198b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-3082d56a.js b/web/settings/assets/InstantChargeConfig-1957a26d.js similarity index 96% rename from web/settings/assets/InstantChargeConfig-3082d56a.js rename to web/settings/assets/InstantChargeConfig-1957a26d.js index e30366f26f..ccba6e1260 100644 --- a/web/settings/assets/InstantChargeConfig-3082d56a.js +++ b/web/settings/assets/InstantChargeConfig-1957a26d.js @@ -1 +1 @@ -import{C as l}from"./index-ff24c9c8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-451d2d20.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-42f245ba.js b/web/settings/assets/LegalSettings-8d508618.js similarity index 97% rename from web/settings/assets/LegalSettings-42f245ba.js rename to web/settings/assets/LegalSettings-8d508618.js index 0c3bf241f0..61a3154145 100644 --- a/web/settings/assets/LegalSettings-42f245ba.js +++ b/web/settings/assets/LegalSettings-8d508618.js @@ -1 +1 @@ -import{C as g}from"./index-ff24c9c8.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-451d2d20.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-463c13a8.js b/web/settings/assets/LoadManagementConfig-b175e1b1.js similarity index 99% rename from web/settings/assets/LoadManagementConfig-463c13a8.js rename to web/settings/assets/LoadManagementConfig-b175e1b1.js index 008a4054fe..c63808dd04 100644 --- a/web/settings/assets/LoadManagementConfig-463c13a8.js +++ b/web/settings/assets/LoadManagementConfig-b175e1b1.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-ff24c9c8.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-451d2d20.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-87575327.js b/web/settings/assets/MqttBridgeConfig-97b2414e.js similarity index 99% rename from web/settings/assets/MqttBridgeConfig-87575327.js rename to web/settings/assets/MqttBridgeConfig-97b2414e.js index b190ed391b..c12e713187 100644 --- a/web/settings/assets/MqttBridgeConfig-87575327.js +++ b/web/settings/assets/MqttBridgeConfig-97b2414e.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-ff24c9c8.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-451d2d20.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OptionalComponents-ce43ca94.js b/web/settings/assets/OptionalComponents-ea25690b.js similarity index 99% rename from web/settings/assets/OptionalComponents-ce43ca94.js rename to web/settings/assets/OptionalComponents-ea25690b.js index 8b1eae79fc..4c012c4743 100644 --- a/web/settings/assets/OptionalComponents-ce43ca94.js +++ b/web/settings/assets/OptionalComponents-ea25690b.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-ff24c9c8.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-451d2d20.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-451d2d20.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-e9950f4c.js b/web/settings/assets/ScheduledChargeConfig-e30b140f.js similarity index 97% rename from web/settings/assets/ScheduledChargeConfig-e9950f4c.js rename to web/settings/assets/ScheduledChargeConfig-e30b140f.js index 8ee8105ecc..0896782c7b 100644 --- a/web/settings/assets/ScheduledChargeConfig-e9950f4c.js +++ b/web/settings/assets/ScheduledChargeConfig-e30b140f.js @@ -1 +1 @@ -import{C as g}from"./index-ff24c9c8.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-451d2d20.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-ea1fbcc9.js b/web/settings/assets/Status-73741289.js similarity index 99% rename from web/settings/assets/Status-ea1fbcc9.js rename to web/settings/assets/Status-73741289.js index 7b50e7bd94..606e277750 100644 --- a/web/settings/assets/Status-ea1fbcc9.js +++ b/web/settings/assets/Status-73741289.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-ff24c9c8.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-451d2d20.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-bd862382.js b/web/settings/assets/Support-86e0f1ee.js similarity index 98% rename from web/settings/assets/Support-bd862382.js rename to web/settings/assets/Support-86e0f1ee.js index ef7b638202..564e8bc8ce 100644 --- a/web/settings/assets/Support-bd862382.js +++ b/web/settings/assets/Support-86e0f1ee.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-ff24c9c8.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-451d2d20.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-86742d64.js b/web/settings/assets/System-13142ce3.js similarity index 99% rename from web/settings/assets/System-86742d64.js rename to web/settings/assets/System-13142ce3.js index bdc9b04fb5..df8c380eb7 100644 --- a/web/settings/assets/System-86742d64.js +++ b/web/settings/assets/System-13142ce3.js @@ -1 +1 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-ff24c9c8.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; +import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-451d2d20.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-7adb4368.js b/web/settings/assets/TestingStore-de474301.js similarity index 99% rename from web/settings/assets/TestingStore-7adb4368.js rename to web/settings/assets/TestingStore-de474301.js index 2de9d8043c..d479245012 100644 --- a/web/settings/assets/TestingStore-7adb4368.js +++ b/web/settings/assets/TestingStore-de474301.js @@ -1 +1 @@ -import{C as h}from"./index-ff24c9c8.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-451d2d20.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-72fb7dc8.js b/web/settings/assets/TimeChargeConfig-f11d8cfe.js similarity index 96% rename from web/settings/assets/TimeChargeConfig-72fb7dc8.js rename to web/settings/assets/TimeChargeConfig-f11d8cfe.js index d05e07b3ee..07f13f7953 100644 --- a/web/settings/assets/TimeChargeConfig-72fb7dc8.js +++ b/web/settings/assets/TimeChargeConfig-f11d8cfe.js @@ -1 +1 @@ -import{C as l}from"./index-ff24c9c8.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-451d2d20.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-32bc7a74.js b/web/settings/assets/VehicleConfig-2c445ee2.js similarity index 99% rename from web/settings/assets/VehicleConfig-32bc7a74.js rename to web/settings/assets/VehicleConfig-2c445ee2.js index 99b02f0e60..d6ddfea7b4 100644 --- a/web/settings/assets/VehicleConfig-32bc7a74.js +++ b/web/settings/assets/VehicleConfig-2c445ee2.js @@ -1 +1 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-ff24c9c8.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-30589088.js"),["assets/vehicle-30589088.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-ff24c9c8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; +import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-451d2d20.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-39e57c4c.js"),["assets/vehicle-39e57c4c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-451d2d20.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; diff --git a/web/settings/assets/index-ff24c9c8.js b/web/settings/assets/index-451d2d20.js similarity index 96% rename from web/settings/assets/index-ff24c9c8.js rename to web/settings/assets/index-451d2d20.js index 9935b26f13..2a8ec15480 100644 --- a/web/settings/assets/index-ff24c9c8.js +++ b/web/settings/assets/index-451d2d20.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-ea1fbcc9.js"),["assets/Status-ea1fbcc9.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-b9d6370b.js"),["assets/ChargeLog-b9d6370b.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-0a62513c.js"),["assets/Chart-0a62513c.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-4871098e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-a70bba3b.js"),["assets/GeneralConfig-a70bba3b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-ce43ca94.js"),["assets/OptionalComponents-ce43ca94.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-26a2df84.js"),["assets/GeneralChargeConfig-26a2df84.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3082d56a.js"),["assets/InstantChargeConfig-3082d56a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-2ffbdec7.js"),["assets/PVChargeConfig-2ffbdec7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-72fb7dc8.js"),["assets/TimeChargeConfig-72fb7dc8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-e9950f4c.js"),["assets/ScheduledChargeConfig-e9950f4c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-193acb85.js"),["assets/HardwareInstallation-193acb85.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-463c13a8.js"),["assets/LoadManagementConfig-463c13a8.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-c38ea51d.js"),["assets/ChargePointInstallation-c38ea51d.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-32bc7a74.js"),["assets/VehicleConfig-32bc7a74.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-dd687549.js"),["assets/CloudConfig-dd687549.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-87575327.js"),["assets/MqttBridgeConfig-87575327.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-c383ba34.js"),["assets/DebugConfig-c383ba34.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-bd862382.js"),["assets/Support-bd862382.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-42f245ba.js"),["assets/LegalSettings-42f245ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-86742d64.js"),["assets/System-86742d64.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-aa9c5920.js"),["assets/DataManagement-aa9c5920.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-7adb4368.js"),["assets/TestingStore-7adb4368.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-73741289.js"),["assets/Status-73741289.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-c1fa84a0.js"),["assets/ChargeLog-c1fa84a0.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-8b04f805.js"),["assets/Chart-8b04f805.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-f8e573cd.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-173a411a.js"),["assets/GeneralConfig-173a411a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-ea25690b.js"),["assets/OptionalComponents-ea25690b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-e7f81317.js"),["assets/GeneralChargeConfig-e7f81317.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-1957a26d.js"),["assets/InstantChargeConfig-1957a26d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-5bf7058a.js"),["assets/PVChargeConfig-5bf7058a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-f11d8cfe.js"),["assets/TimeChargeConfig-f11d8cfe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-e30b140f.js"),["assets/ScheduledChargeConfig-e30b140f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-ae3c4375.js"),["assets/HardwareInstallation-ae3c4375.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-b175e1b1.js"),["assets/LoadManagementConfig-b175e1b1.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-ac4eb7c0.js"),["assets/ChargePointInstallation-ac4eb7c0.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-2c445ee2.js"),["assets/VehicleConfig-2c445ee2.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-62c3bc70.js"),["assets/CloudConfig-62c3bc70.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-97b2414e.js"),["assets/MqttBridgeConfig-97b2414e.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-cfeb9017.js"),["assets/DebugConfig-cfeb9017.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-86e0f1ee.js"),["assets/Support-86e0f1ee.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-8d508618.js"),["assets/LegalSettings-8d508618.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-13142ce3.js"),["assets/System-13142ce3.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-e6b0bf99.js"),["assets/DataManagement-e6b0bf99.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-de474301.js"),["assets/TestingStore-de474301.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/vehicle-30589088.js b/web/settings/assets/vehicle-39e57c4c.js similarity index 97% rename from web/settings/assets/vehicle-30589088.js rename to web/settings/assets/vehicle-39e57c4c.js index b6f09a57b0..e11379a89c 100644 --- a/web/settings/assets/vehicle-30589088.js +++ b/web/settings/assets/vehicle-39e57c4c.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-ff24c9c8.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-451d2d20.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vendor-chartjs-4871098e.js b/web/settings/assets/vendor-chartjs-f8e573cd.js similarity index 99% rename from web/settings/assets/vendor-chartjs-4871098e.js rename to web/settings/assets/vendor-chartjs-f8e573cd.js index 56bebd3650..2a1e08d4f0 100644 --- a/web/settings/assets/vendor-chartjs-4871098e.js +++ b/web/settings/assets/vendor-chartjs-f8e573cd.js @@ -10,7 +10,7 @@ var no=Object.defineProperty;var so=(i,t,e)=>t in i?no(i,t,{enumerable:!0,config * Released under the MIT License */class zr{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,n,s){const o=e.listeners[s],r=e.duration;o.forEach(a=>a({chart:t,initial:e.initial,numSteps:r,currentStep:Math.min(n-e.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=as.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((n,s)=>{if(!n.running||!n.items.length)return;const o=n.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>n.duration&&(n.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,n,t,"progress")),o.length||(n.running=!1,this._notify(s,n,t,"complete"),n.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){const e=this._charts;let n=e.get(t);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,n)),n}listen(t,e,n){this._getAnims(t).listeners[e].push(n)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((n,s)=>Math.max(n,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const n=e.items;let s=n.length-1;for(;s>=0;--s)n[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var rt=new zr;const Ki="transparent",Ir={boolean(i,t,e){return e>.5?t:i},color(i,t,e){const n=Ri(i||Ki),s=n.valid&&Ri(t||Ki);return s&&s.valid?s.mix(n,e).hexString():t},number(i,t,e){return i+(t-i)*e}};class Er{constructor(t,e,n,s){const o=e[n];s=ge([t.to,s,o,t.from]);const r=ge([t.from,o,s]);this._active=!0,this._fn=t.fn||Ir[t.type||typeof r],this._easing=te[t.easing]||te.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=n,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,n){if(this._active){this._notify(!1);const s=this._target[this._prop],o=n-this._start,r=this._duration-o;this._start=n,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=ge([t.to,e,s,t.from]),this._from=ge([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,n=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,n)=>{t.push({res:e,rej:n})})}_notify(t){const e=t?"res":"rej",n=this._promises||[];for(let s=0;s{const o=t[s];if(!L(o))return;const r={};for(const a of e)r[a]=o[a];(E(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!n.has(a))&&n.set(a,r)})})}_animateOptions(t,e){const n=e.options,s=Rr(t,n);if(!s)return[];const o=this._createAnimations(s,n);return n.$shared&&Fr(t.options.$animations,n).then(()=>{t.options=n},()=>{}),o}_createAnimations(t,e){const n=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(e),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,e));continue}const h=e[c];let d=o[c];const f=n.get(c);if(d)if(f&&d.active()){d.update(f,h,a);continue}else d.cancel();if(!f||!f.duration){t[c]=h;continue}o[c]=d=new Er(f,t,c,h),s.push(d)}return s}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}const n=this._createAnimations(t,e);if(n.length)return rt.add(this._chart,n),!0}}function Fr(i,t){const e=[],n=Object.keys(t);for(let s=0;s0||!e&&o<0)return s.index}return null}function Qi(i,t){const{chart:e,_cachedMeta:n}=i,s=e._stacks||(e._stacks={}),{iScale:o,vScale:r,index:a}=n,l=o.axis,c=r.axis,h=Nr(o,r,n),d=t.length;let f;for(let u=0;ue[n].axis===t).shift()}function $r(i,t){return xt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Ur(i,t,e){return xt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function $t(i,t){const e=i.controller.index,n=i.vScale&&i.vScale.axis;if(n){t=t||i._parsed;for(const s of t){const o=s._stacks;if(!o||o[n]===void 0||o[n][e]===void 0)return;delete o[n][e],o[n]._visualValues!==void 0&&o[n]._visualValues[e]!==void 0&&delete o[n]._visualValues[e]}}}const Ke=i=>i==="reset"||i==="none",Ji=(i,t)=>t?i:Object.assign({},i),Yr=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:Ss(e,!0),values:null};class ie{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Gi(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&$t(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset(),s=(d,f,u,g)=>d==="x"?f:d==="r"?g:u,o=e.xAxisID=D(n.xAxisID,Ye(t,"x")),r=e.yAxisID=D(n.yAxisID,Ye(t,"y")),a=e.rAxisID=D(n.rAxisID,Ye(t,"r")),l=e.indexAxis,c=e.iAxisID=s(l,o,r,a),h=e.vAxisID=s(l,r,o,a);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Ii(this._data,this),t._stacked&&$t(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._data;if(L(e))this._data=Wr(e);else if(n!==e){if(n){Ii(n,this);const s=this._cachedMeta;$t(s),s._parsed=[]}e&&Object.isExtensible(e)&&Co(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();let s=!1;this._dataCheck();const o=e._stacked;e._stacked=Gi(e.vScale,e),e.stack!==n.stack&&(s=!0,$t(e),e.stack=n.stack),this._resyncElements(t),(s||o!==e._stacked)&&Qi(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:n,_data:s}=this,{iScale:o,_stacked:r}=n,a=o.axis;let l=t===0&&e===s.length?!0:n._sorted,c=t>0&&n._parsed[t-1],h,d,f;if(this._parsing===!1)n._parsed=s,n._sorted=!0,f=s;else{E(s[t])?f=this.parseArrayData(n,s,t,e):L(s[t])?f=this.parseObjectData(n,s,t,e):f=this.parsePrimitiveData(n,s,t,e);const u=()=>d[a]===null||c&&d[a]p||d=0;--f)if(!g()){this.updateRangeFromParsed(c,t,u,l);break}}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let s,o,r;for(s=0,o=e.length;s=0&&tthis.getContext(n,s,e),p=c.resolveNamedOptions(f,u,g,d);return p.$shared&&(p.$shared=l,o[r]=Object.freeze(Ji(p,l))),p}_resolveAnimations(t,e,n){const s=this.chart,o=this._cachedDataOpts,r=`animation-${e}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),f=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(f,this.getContext(t,n,e))}const c=new ks(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ke(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const n=this.resolveDataElementOptions(t,e),s=this._sharedOptions,o=this.getSharedOptions(n),r=this.includeOptions(e,o)||o!==s;return this.updateSharedOptions(o,e,n),{sharedOptions:o,includeOptions:r}}updateElement(t,e,n,s){Ke(s)?Object.assign(t,n):this._resolveAnimations(e,s).update(t,n)}updateSharedOptions(t,e,n){t&&!Ke(e)&&this._resolveAnimations(void 0,e).update(t,n)}_setStyle(t,e,n,s){t.active=s;const o=this.getStyle(e,s);this._resolveAnimations(e,n,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,n){this._setStyle(t,n,"active",!1)}setHoverStyle(t,e,n){this._setStyle(t,n,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,n=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=n.length,o=e.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o{for(c.length+=e,a=c.length-1;a>=r;a--)c[a]=c[a-e]};for(l(o),a=t;a0&&this.getParsed(e-1);for(let x=0;x=_){M.skip=!0;continue}const v=this.getParsed(x),C=I(v[u]),A=M[f]=r.getPixelForValue(v[f],x),T=M[u]=o||C?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,v,l):v[u],x);M.skip=isNaN(A)||isNaN(T)||C,M.stop=x>0&&Math.abs(v[f]-w[f])>m,p&&(M.parsed=v,M.raw=c.data[x]),d&&(M.options=h||this.resolveDataElementOptions(x,k.active?"active":s)),b||this.updateElement(k,x,M,s),w=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,n=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return n;const o=s[0].size(this.resolveDataElementOptions(0)),r=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(n,o,r)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}S(Se,"id","line"),S(Se,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),S(Se,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function vt(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ki{constructor(t){S(this,"options");this.options=t||{}}static override(t){Object.assign(ki.prototype,t)}init(){}formats(){return vt()}parse(){return vt()}format(){return vt()}add(){return vt()}diff(){return vt()}startOf(){return vt()}endOf(){return vt()}}var Ps={_date:ki};function Kr(i,t,e,n){const{controller:s,data:o,_sorted:r}=i,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?So:kt;if(n){if(s._sharedOptions){const c=o[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){const d=l(o,t,e-h),f=l(o,t,e+h);return{lo:d.lo,hi:f.hi}}}}else return l(o,t,e)}return{lo:0,hi:o.length-1}}function ce(i,t,e,n,s){const o=i.getSortedVisibleDatasetMetas(),r=e[t];for(let a=0,l=o.length;a{l[r](t[e],s)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,s))}),n&&!a?[]:o}var Zr={evaluateInteractionItems:ce,modes:{index(i,t,e,n){const s=st(t,i),o=e.axis||"x",r=e.includeInvisible||!1,a=e.intersect?Xe(i,s,o,n,r):qe(i,s,o,!1,n,r),l=[];return a.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{const h=a[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,n){const s=st(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;let a=e.intersect?Xe(i,s,o,n,r):qe(i,s,o,!1,n,r);if(a.length>0){const l=a[0].datasetIndex,c=i.getDatasetMeta(l).data;a=[];for(let h=0;he.pos===t)}function en(i,t){return i.filter(e=>Cs.indexOf(e.pos)===-1&&e.box.axis===t)}function Yt(i,t){return i.sort((e,n)=>{const s=t?n:e,o=t?e:n;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function Qr(i){const t=[];let e,n,s,o,r,a;for(e=0,n=(i||[]).length;ec.box.fullSize),!0),n=Yt(Ut(t,"left"),!0),s=Yt(Ut(t,"right")),o=Yt(Ut(t,"top"),!0),r=Yt(Ut(t,"bottom")),a=en(t,"x"),l=en(t,"y");return{fullSize:e,leftAndTop:n.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:Ut(t,"chartArea"),vertical:n.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function nn(i,t,e,n){return Math.max(i[e],t[e])+Math.max(i[n],t[n])}function Ds(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function ia(i,t,e,n){const{pos:s,box:o}=e,r=i.maxPadding;if(!L(s)){e.size&&(i[s]-=e.size);const d=n[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[s]+=e.size}o.getPadding&&Ds(r,o.getPadding());const a=Math.max(0,t.outerWidth-nn(r,i,"left","right")),l=Math.max(0,t.outerHeight-nn(r,i,"top","bottom")),c=a!==i.w,h=l!==i.h;return i.w=a,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function na(i){const t=i.maxPadding;function e(n){const s=Math.max(t[n]-i[n],0);return i[n]+=s,s}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function sa(i,t){const e=t.maxPadding;function n(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],e[r])}),o}return n(i?["left","right"]:["top","bottom"])}function qt(i,t,e,n){const s=[];let o,r,a,l,c,h;for(o=0,r=i.length,c=0;o{typeof p.beforeLayout=="function"&&p.beforeLayout()});const h=l.reduce((p,m)=>m.box.options&&m.box.options.display===!1?p:p+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),f=Object.assign({},s);Ds(f,V(n));const u=Object.assign({maxPadding:f,w:o,h:r,x:s.left,y:s.top},s),g=ta(l.concat(c),d);qt(a.fullSize,u,d,g),qt(l,u,d,g),qt(c,u,d,g)&&qt(l,u,d,g),na(u),sn(a.leftAndTop,u,d,g),u.x+=u.w,u.y+=u.h,sn(a.rightAndBottom,u,d,g),i.chartArea={left:u.left,top:u.top,right:u.left+u.w,bottom:u.top+u.h,height:u.h,width:u.w},O(a.chartArea,p=>{const m=p.box;Object.assign(m,i.chartArea),m.update(u.w,u.h,{left:0,top:0,right:0,bottom:0})})}};class Os{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,n){}removeEventListener(t,e,n){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,n,s){return e=Math.max(0,e||t.width),n=n||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):n)}}isAttached(t){return!0}updateConfig(t){}}class oa extends Os{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Pe="$chartjs",ra={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},on=i=>i===null||i==="";function aa(i,t){const e=i.style,n=i.getAttribute("height"),s=i.getAttribute("width");if(i[Pe]={initial:{height:n,width:s,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",on(s)){const o=Vi(i,"width");o!==void 0&&(i.width=o)}if(on(n))if(i.style.height==="")i.height=i.width/(t||2);else{const o=Vi(i,"height");o!==void 0&&(i.height=o)}return i}const Ts=wr?{passive:!0}:!1;function la(i,t,e){i.addEventListener(t,e,Ts)}function ca(i,t,e){i.canvas.removeEventListener(t,e,Ts)}function ha(i,t){const e=ra[i.type]||i.type,{x:n,y:s}=st(i,t);return{type:e,chart:t,native:i,x:n!==void 0?n:null,y:s!==void 0?s:null}}function Fe(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function da(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Fe(a.addedNodes,n),r=r&&!Fe(a.removedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}function fa(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Fe(a.removedNodes,n),r=r&&!Fe(a.addedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}const re=new Map;let rn=0;function Ls(){const i=window.devicePixelRatio;i!==rn&&(rn=i,re.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function ua(i,t){re.size||window.addEventListener("resize",Ls),re.set(i,t)}function ga(i){re.delete(i),re.size||window.removeEventListener("resize",Ls)}function pa(i,t,e){const n=i.canvas,s=n&&Mi(n);if(!s)return;const o=ls((a,l)=>{const c=s.clientWidth;e(a,l),c{const l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(s),ua(i,o),r}function Ge(i,t,e){e&&e.disconnect(),t==="resize"&&ga(i)}function ma(i,t,e){const n=i.canvas,s=ls(o=>{i.ctx!==null&&e(ha(o,i))},i);return la(n,t,s),s}class ba extends Os{acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(aa(t,e),n):null}releaseContext(t){const e=t.canvas;if(!e[Pe])return!1;const n=e[Pe].initial;["height","width"].forEach(o=>{const r=n[o];I(r)?e.removeAttribute(o):e.setAttribute(o,r)});const s=n.style||{};return Object.keys(s).forEach(o=>{e.style[o]=s[o]}),e.width=e.width,delete e[Pe],!0}addEventListener(t,e,n){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),r={attach:da,detach:fa,resize:pa}[e]||ma;s[e]=r(t,e,n)}removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),s=n[e];if(!s)return;({attach:Ge,detach:Ge,resize:Ge}[e]||ca)(t,e,s),n[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,n,s){return vr(t,e,n,s)}isAttached(t){const e=Mi(t);return!!(e&&e.isConnected)}}function xa(i){return!xs()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?oa:ba}class mt{constructor(){S(this,"x");S(this,"y");S(this,"active",!1);S(this,"options");S(this,"$animations")}tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:e,y:n}}hasValue(){return oe(this.x)&&oe(this.y)}getProps(t,e){const n=this.$animations;if(!e||!n)return this;const s={};return t.forEach(o=>{s[o]=n[o]&&n[o].active()?n[o]._to:this[o]}),s}}S(mt,"defaults",{}),S(mt,"defaultRoutes");function _a(i,t){const e=i.options.ticks,n=ya(i),s=Math.min(e.maxTicksLimit||n,n),o=e.major.enabled?wa(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return Ma(t,c,o,r/s),c;const h=va(o,t,s);if(r>0){let d,f;const u=r>1?Math.round((l-a)/(r-1)):null;for(xe(t,c,h,I(u)?0:a-u,a),d=0,f=r-1;ds)return l}return Math.max(s,1)}function wa(i){const t=[];let e,n;for(e=0,n=i.length;ei==="left"?"right":i==="right"?"left":i,an=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e,ln=(i,t)=>Math.min(t||i,i);function cn(i,t){const e=[],n=i.length/t,s=i.length;let o=0;for(;or+a)))return l}function Ca(i,t){O(i,e=>{const n=e.gc,s=n.length/2;let o;if(s>t){for(o=0;on?n:e,n=s&&e>n?e:n,{min:G(e,G(n,e)),max:G(n,G(e,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){P(this.options.beforeUpdate,[this])}update(t,e,n){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Jo(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a=o||n<=1||!this.isHorizontal()){this.labelRotation=s;return}const h=this._getLabelSizes(),d=h.widest.width,f=h.highest.height,u=tt(this.chart.width-d,0,this.maxWidth);a=t.offset?this.maxWidth/n:u/(n-1),d+6>a&&(a=u/(n-(t.offset?.5:1)),l=this.maxHeight-Kt(t.grid)-e.padding-hn(t.title,this.chart.options.font),c=Math.sqrt(d*d+f*f),r=mi(Math.min(Math.asin(tt((h.highest.height+6)/a,-1,1)),Math.asin(tt(l/c,-1,1))-Math.asin(tt(f/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){P(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){P(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=hn(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Kt(o)+l):(t.height=this.maxHeight,t.width=Kt(o)+l),n.display&&this.ticks.length){const{first:c,last:h,widest:d,highest:f}=this._getLabelSizes(),u=n.padding*2,g=ft(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(a){const b=n.mirror?0:m*d.width+p*f.height;t.height=Math.min(this.maxHeight,t.height+b+u)}else{const b=n.mirror?0:p*d.width+m*f.height;t.width=Math.min(this.maxWidth,t.width+b+u)}this._calculatePadding(c,h,m,p)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,n,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let f=0,u=0;l?c?(f=s*t.width,u=n*e.height):(f=n*t.height,u=s*e.width):o==="start"?u=e.width:o==="end"?f=t.width:o!=="inner"&&(f=t.width/2,u=e.width/2),this.paddingLeft=Math.max((f-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((u-d+r)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+r,this.paddingBottom=d+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){P(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,n;for(e=0,n=t.length;e({width:r[C]||0,height:a[C]||0});return{first:v(0),last:v(e-1),widest:v(k),highest:v(M),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return ko(this._alignToPixels?yt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/n:l/s:l*s0}_computeGridLineItems(t){const e=this.axis,n=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),d=this.ticks.length+(l?1:0),f=Kt(o),u=[],g=a.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(W){return yt(n,W,p)};let _,y,w,x,k,M,v,C,A,T,z,$;if(r==="top")_=b(this.bottom),M=this.bottom-f,C=_-m,T=b(t.top)+m,$=t.bottom;else if(r==="bottom")_=b(this.top),T=t.top,$=b(t.bottom)-m,M=_+m,C=this.top+f;else if(r==="left")_=b(this.right),k=this.right-f,v=_-m,A=b(t.left)+m,z=t.right;else if(r==="right")_=b(this.left),A=t.left,z=b(t.right)-m,k=_+m,v=this.left+f;else if(e==="x"){if(r==="center")_=b((t.top+t.bottom)/2+.5);else if(L(r)){const W=Object.keys(r)[0],J=r[W];_=b(this.chart.scales[W].getPixelForValue(J))}T=t.top,$=t.bottom,M=_+m,C=M+f}else if(e==="y"){if(r==="center")_=b((t.left+t.right)/2);else if(L(r)){const W=Object.keys(r)[0],J=r[W];_=b(this.chart.scales[W].getPixelForValue(J))}k=_-m,v=k-f,A=t.left,z=t.right}const et=D(s.ticks.maxTicksLimit,d),B=Math.max(1,Math.ceil(d/et));for(y=0;yo.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const e=this.options.grid,n=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,h)=>{!h.width||!h.color||(n.save(),n.lineWidth=h.width,n.strokeStyle=h.color,n.setLineDash(h.borderDash||[]),n.lineDashOffset=h.borderDashOffset,n.beginPath(),n.moveTo(l.x,l.y),n.lineTo(c.x,c.y),n.stroke(),n.restore())};if(e.display)for(o=0,r=s.length;o{this.draw(o)}}]:[{z:n,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+"AxisID",s=[];let o,r;for(o=0,r=e.length;o{const n=e.split("."),s=n.pop(),o=[i].concat(n).join("."),r=t[e].split("."),a=r.pop(),l=r.join(".");R.route(o,s,l,a)})}function Ia(i){return"id"in i&&"defaults"in i}class Ea{constructor(){this.controllers=new _e(ie,"datasets",!0),this.elements=new _e(mt,"elements"),this.plugins=new _e(Object,"plugins"),this.scales=new _e(Rt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,n){[...e].forEach(s=>{const o=n||this._getRegistryForType(s);n||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):O(s,r=>{const a=n||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,e,n){const s=pi(t);P(n["before"+s],[],n),e[t](n),P(n["after"+s],[],n)}_getRegistryForType(t){for(let e=0;eo.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(e,n),t,"stop"),this._notify(s(n,e),t,"start")}}function Ra(i){const t={},e=[],n=Object.keys(nt.plugins.items);for(let o=0;o1&&dn(i[0].toLowerCase());if(n)return n}throw new Error(`Cannot determine type of '${i}' axis. Please provide 'axis' or 'position' option.`)}function fn(i,t,e){if(e[t+"AxisID"]===i)return{axis:t}}function $a(i,t){if(t.data&&t.data.datasets){const e=t.data.datasets.filter(n=>n.xAxisID===i||n.yAxisID===i);if(e.length)return fn(i,"x",e[0])||fn(i,"y",e[0])}return{}}function Ua(i,t){const e=Ct[i.type]||{scales:{}},n=t.scales||{},s=si(i.type,t),o=Object.create(null);return Object.keys(n).forEach(r=>{const a=n[r];if(!L(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=oi(r,a,$a(r,i),R.scales[a.type]),c=ja(l,s),h=e.scales||{};o[r]=Qt(Object.create(null),[{axis:l},a,h[l],h[c]])}),i.data.datasets.forEach(r=>{const a=r.type||i.type,l=r.indexAxis||si(a,t),h=(Ct[a]||{}).scales||{};Object.keys(h).forEach(d=>{const f=Na(d,l),u=r[f+"AxisID"]||f;o[u]=o[u]||Object.create(null),Qt(o[u],[{axis:f},n[u],h[d]])})}),Object.keys(o).forEach(r=>{const a=o[r];Qt(a,[R.scales[a.type],R.scale])}),o}function As(i){const t=i.options||(i.options={});t.plugins=D(t.plugins,{}),t.scales=Ua(i,t)}function zs(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function Ya(i){return i=i||{},i.data=zs(i.data),As(i),i}const un=new Map,Is=new Set;function ye(i,t){let e=un.get(i);return e||(e=t(),un.set(i,e),Is.add(e)),e}const Xt=(i,t,e)=>{const n=Te(t,e);n!==void 0&&i.add(n)};class Ka{constructor(t){this._config=Ya(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=zs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),As(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ye(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ye(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ye(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id,n=this.type;return ye(`${n}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const n=this._scopeCache;let s=n.get(t);return(!s||e)&&(s=new Map,n.set(t,s)),s}getOptionScopes(t,e,n){const{options:s,type:o}=this,r=this._cachedScopes(t,n),a=r.get(e);if(a)return a;const l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>Xt(l,t,d))),h.forEach(d=>Xt(l,s,d)),h.forEach(d=>Xt(l,Ct[o]||{},d)),h.forEach(d=>Xt(l,R,d)),h.forEach(d=>Xt(l,ii,d))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Is.has(e)&&r.set(e,c),c}chartOptionScopes(){const{options:t,type:e}=this;return[t,Ct[e]||{},R.datasets[e]||{},{type:e},R,ii]}resolveNamedOptions(t,e,n,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=gn(this._resolverCache,t,s);let l=r;if(qa(r,e)){o.$shared=!1,n=gt(n)?n():n;const c=this.createResolver(t,n,a);l=Et(r,n,c)}for(const c of e)o[c]=l[c];return o}createResolver(t,e,n=[""],s){const{resolver:o}=gn(this._resolverCache,t,n);return L(e)?Et(o,e,void 0,s):o}}function gn(i,t,e){let n=i.get(t);n||(n=new Map,i.set(t,n));const s=e.join();let o=n.get(s);return o||(o={resolver:yi(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},n.set(s,o)),o}const Xa=i=>L(i)&&Object.getOwnPropertyNames(i).reduce((t,e)=>t||gt(i[e]),!1);function qa(i,t){const{isScriptable:e,isIndexable:n}=us(i);for(const s of t){const o=e(s),r=n(s),a=(r||o)&&i[s];if(o&&(gt(a)||Xa(a))||r&&E(a))return!0}return!1}var Ga="4.3.2";const Za=["top","bottom","left","right","chartArea"];function pn(i,t){return i==="top"||i==="bottom"||Za.indexOf(i)===-1&&t==="x"}function mn(i,t){return function(e,n){return e[i]===n[i]?e[t]-n[t]:e[i]-n[i]}}function bn(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),P(e&&e.onComplete,[i],t)}function Qa(i){const t=i.chart,e=t.options.animation;P(e&&e.onProgress,[i],t)}function Es(i){return xs()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const Ce={},xn=i=>{const t=Es(i);return Object.values(Ce).filter(e=>e.canvas===t).pop()};function Ja(i,t,e){const n=Object.keys(i);for(const s of n){const o=+s;if(o>=t){const r=i[s];delete i[s],(e>0||o>t)&&(i[o+e]=r)}}}function tl(i,t,e,n){return!e||i.type==="mouseout"?null:n?t:i}function el(i){const{xScale:t,yScale:e}=i;if(t&&e)return{left:t.left,right:t.right,top:e.top,bottom:e.bottom}}var ht;let Si=(ht=class{static register(...t){nt.add(...t),_n()}static unregister(...t){nt.remove(...t),_n()}constructor(t,e){const n=this.config=new Ka(e),s=Es(t),o=xn(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||xa(s)),this.platform.updateConfig(n);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=ho(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Fa,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Oo(d=>this.update(d),r.resizeDelay||0),this._dataChanges=[],Ce[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}rt.listen(this,"complete",bn),rt.listen(this,"progress",Qa),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:n,height:s,_aspectRatio:o}=this;return I(t)?e&&o?o:s?n/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ji(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Hi(this.canvas,this.ctx),this}stop(){return rt.stop(this),this}resize(t,e){rt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const n=this.options,s=this.canvas,o=n.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,e,o),a=n.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,ji(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),P(n.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options.scales||{};O(e,(n,s)=>{n.id=s})}buildOrUpdateScales(){const t=this.options,e=t.scales,n=this.scales,s=Object.keys(n).reduce((r,a)=>(r[a]=!1,r),{});let o=[];e&&(o=o.concat(Object.keys(e).map(r=>{const a=e[r],l=oi(r,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),O(o,r=>{const a=r.options,l=a.id,c=oi(l,a),h=D(a.type,r.dtype);(a.position===void 0||pn(a.position,c)!==pn(r.dposition))&&(a.position=r.dposition),s[l]=!0;let d=null;if(l in n&&n[l].type===h)d=n[l];else{const f=nt.getScale(h);d=new f({id:l,type:h,ctx:this.ctx,chart:this}),n[d.id]=d}d.init(a,t)}),O(s,(r,a)=>{r||delete n[a]}),O(n,r=>{ut.configure(this,r,r.options),ut.addBox(this,r)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,n=t.length;if(t.sort((s,o)=>s.index-o.index),n>e){for(let s=e;se.length&&delete this._stacks,t.forEach((n,s)=>{e.filter(o=>o===n._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let n,s;for(this._removeUnreferencedMetasets(),n=0,s=e.length;n{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const n=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(mn("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){O(this.scales,t=>{ut.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),n=new Set(t.events);(!Ti(e,n)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:n,start:s,count:o}of e){const r=n==="_removeElements"?-o:o;Ja(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,n=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=n(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;ut.update(this,this.width,this.height,t);const e=this.chartArea,n=e.width<=0||e.height<=0;this._layers=[],O(this.boxes,s=>{n&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,n=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,n=t._clip,s=!n.disabled,o=el(t)||this.chartArea,r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&We(e,{left:n.left===!1?0:o.left-n.left,right:n.right===!1?this.width:o.right+n.right,top:n.top===!1?0:o.top-n.top,bottom:n.bottom===!1?this.height:o.bottom+n.bottom}),t.controller.draw(),s&&Ne(e),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return ct(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,n,s){const o=Zr.modes[e];return typeof o=="function"?o(this,t,n,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],n=this._metasets;let s=n.filter(o=>o&&o._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},n.push(s)),s}getContext(){return this.$context||(this.$context=xt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const n=this.getDatasetMeta(t);return typeof n.hidden=="boolean"?!n.hidden:!e.hidden}setDatasetVisibility(t,e){const n=this.getDatasetMeta(t);n.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,n){const s=n?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);Le(e)?(o.data[e].hidden=!n,this.update()):(this.setDatasetVisibility(t,n),r.update(o,{visible:n}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),rt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};O(this.options.events,o=>n(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,n=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),n("resize",o),n("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),n("attach",a)},e.isAttached(this.canvas)?a():r()}unbindEvents(){O(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},O(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,n){const s=n?"set":"remove";let o,r,a,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!De(n,e)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,e))}notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)}isPluginEnabled(t){return this._plugins._cache.filter(e=>e.plugin.id===t).length===1}_updateHoverStyles(t,e,n){const s=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),r=o(e,t),a=n?t:o(t,e);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const n={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",n,s)===!1)return;const o=this._handleEvent(t,e,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,s),(o||n.changed)&&this.render(),this}_handleEvent(t,e,n){const{_active:s=[],options:o}=this,r=e,a=this._getActiveElements(t,s,n,r),l=bo(t),c=tl(t,this._lastEvent,n,l);n&&(this._lastEvent=null,P(o.onHover,[t,a,this],this),l&&P(o.onClick,[t,a,this],this));const h=!De(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=c,h}_getActiveElements(t,e,n,s){if(t.type==="mouseout")return[];if(!n)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}},S(ht,"defaults",R),S(ht,"instances",Ce),S(ht,"overrides",Ct),S(ht,"registry",nt),S(ht,"version",Ga),S(ht,"getChart",xn),ht);function _n(){return O(Si.instances,i=>i._plugins.invalidate())}function Fs(i,t,e=t){i.lineCap=D(e.borderCapStyle,t.borderCapStyle),i.setLineDash(D(e.borderDash,t.borderDash)),i.lineDashOffset=D(e.borderDashOffset,t.borderDashOffset),i.lineJoin=D(e.borderJoinStyle,t.borderJoinStyle),i.lineWidth=D(e.borderWidth,t.borderWidth),i.strokeStyle=D(e.borderColor,t.borderColor)}function il(i,t,e){i.lineTo(e.x,e.y)}function nl(i){return i.stepped?Vo:i.tension||i.cubicInterpolationMode==="monotone"?$o:il}function Rs(i,t,e={}){const n=i.length,{start:s=0,end:o=n-1}=e,{start:r,end:a}=t,l=Math.max(s,r),c=Math.min(o,a),h=sa&&o>a;return{count:n,start:l,loop:t.loop,ilen:c(r+(c?a-w:w))%o,y=()=>{p!==m&&(i.lineTo(h,m),i.lineTo(h,p),i.lineTo(h,b))};for(l&&(u=s[_(0)],i.moveTo(u.x,u.y)),f=0;f<=a;++f){if(u=s[_(f)],u.skip)continue;const w=u.x,x=u.y,k=w|0;k===g?(xm&&(m=x),h=(d*h+w)/++d):(y(),i.lineTo(w,x),g=k,d=0,p=m=x),b=x}y()}function ri(i){const t=i.options,e=t.borderDash&&t.borderDash.length;return!i._decimated&&!i._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?ol:sl}function rl(i){return i.stepped?Mr:i.tension||i.cubicInterpolationMode==="monotone"?kr:Mt}function al(i,t,e,n){let s=t._path;s||(s=t._path=new Path2D,t.path(s,e,n)&&s.closePath()),Fs(i,t.options),i.stroke(s)}function ll(i,t,e,n){const{segments:s,options:o}=t,r=ri(t);for(const a of s)Fs(i,o,a.style),i.beginPath(),r(i,t,a,{start:e,end:e+n-1})&&i.closePath(),i.stroke()}const cl=typeof Path2D=="function";function hl(i,t,e,n){cl&&!t.options.segment?al(i,t,e,n):ll(i,t,e,n)}class St extends mt{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const n=this.options;if((n.tension||n.cubicInterpolationMode==="monotone")&&!n.stepped&&!this._pointsUpdated){const s=n.spanGaps?this._loop:this._fullLoop;pr(this._points,n,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Tr(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,n=t.length;return n&&e[t[n-1].end]}interpolate(t,e){const n=this.options,s=t[e],o=this.points,r=Ms(this,{property:e,start:s,end:s});if(!r.length)return;const a=[],l=rl(n);let c,h;for(c=0,h=r.length;ct!=="borderDash"&&t!=="fill"});function yn(i,t,e,n){const s=i.options,{[e]:o}=i.getProps([e],n);return Math.abs(t-o){a=Pi(r,a,s);const l=s[r],c=s[a];n!==null?(o.push({x:l.x,y:n}),o.push({x:c.x,y:n})):e!==null&&(o.push({x:e,y:l.y}),o.push({x:e,y:c.y}))}),o}function Pi(i,t,e){for(;t>i;t--){const n=e[t];if(!isNaN(n.x)&&!isNaN(n.y))break}return t}function vn(i,t,e,n){return i&&t?n(i[e],t[e]):i?i[e]:t?t[e]:0}function Bs(i,t){let e=[],n=!1;return E(i)?(n=!0,e=i):e=fl(i,t),e.length?new St({points:e,options:{tension:0},_loop:n,_fullLoop:n}):null}function wn(i){return i&&i.fill!==!1}function ul(i,t,e){let s=i[t].fill;const o=[t];let r;if(!e)return s;for(;s!==!1&&o.indexOf(s)===-1;){if(!F(s))return s;if(r=i[s],!r)return!1;if(r.visible)return s;o.push(s),s=r.fill}return!1}function gl(i,t,e){const n=xl(i);if(L(n))return isNaN(n.value)?!1:n;let s=parseFloat(n);return F(s)&&Math.floor(s)===s?pl(n[0],t,s,e):["origin","start","end","stack","shape"].indexOf(n)>=0&&n}function pl(i,t,e,n){return(i==="-"||i==="+")&&(e=t+e),e===t||e<0||e>=n?!1:e}function ml(i,t){let e=null;return i==="start"?e=t.bottom:i==="end"?e=t.top:L(i)?e=t.getPixelForValue(i.value):t.getBasePixel&&(e=t.getBasePixel()),e}function bl(i,t,e){let n;return i==="start"?n=e:i==="end"?n=t.options.reverse?t.min:t.max:L(i)?n=i.value:n=t.getBaseValue(),n}function xl(i){const t=i.options,e=t.fill;let n=D(e&&e.target,e);return n===void 0&&(n=!!t.backgroundColor),n===!1||n===null?!1:n===!0?"origin":n}function _l(i){const{scale:t,index:e,line:n}=i,s=[],o=n.segments,r=n.points,a=yl(t,e);a.push(Bs({x:null,y:t.bottom},n));for(let l=0;l=0;--r){const a=s[r].$filler;a&&(a.line.updateControlPoints(o,a.axis),n&&a.fill&&Qe(i.ctx,a,o))}},beforeDatasetsDraw(i,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;const n=i.getSortedVisibleDatasetMetas();for(let s=n.length-1;s>=0;--s){const o=n[s].$filler;wn(o)&&Qe(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){const n=t.meta.$filler;!wn(n)||e.drawTime!=="beforeDatasetDraw"||Qe(i.ctx,n,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Pn=(i,t)=>{let{boxHeight:e=t,boxWidth:n=t}=i;return i.usePointStyle&&(e=Math.min(e,t),n=i.pointStyleWidth||Math.min(n,t)),{boxWidth:n,boxHeight:e,itemHeight:Math.max(t,e)}},Tl=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index;class Cn extends mt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=P(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(n=>t.filter(n,this.chart.data))),t.sort&&(e=e.sort((n,s)=>t.sort(n,s,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}const n=t.labels,s=N(n.font),o=s.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Pn(n,o);let c,h;e.font=s.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,s,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,n,s){const{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=s+a;let d=t;o.textAlign="left",o.textBaseline="middle";let f=-1,u=-h;return this.legendItems.forEach((g,p)=>{const m=n+e/2+o.measureText(g.text).width;(p===0||c[c.length-1]+m+2*a>r)&&(d+=h,c[c.length-(p>0?0:1)]=0,u+=h,f++),l[p]={left:0,top:u,row:f,width:m,height:s},c[c.length-1]+=m+a}),d}_fitCols(t,e,n,s){const{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-t;let d=a,f=0,u=0,g=0,p=0;return this.legendItems.forEach((m,b)=>{const{itemWidth:_,itemHeight:y}=Ll(n,e,o,m,s);b>0&&u+y+2*a>h&&(d+=f+a,c.push({width:f,height:u}),g+=f+a,p++,f=u=0),l[b]={left:g,top:u,col:p,width:_,height:y},f=Math.max(f,_),u+=y+a}),d+=f,c.push({width:f,height:u}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:n,labels:{padding:s},rtl:o}}=this,r=zt(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=q(n,this.left+s,this.right-this.lineWidths[a]);for(const c of e)a!==c.row&&(a=c.row,l=q(n,this.left+s,this.right-this.lineWidths[a])),c.top+=this.top+t+s,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+s}else{let a=0,l=q(n,this.top+t+s,this.bottom-this.columnSizes[a].height);for(const c of e)c.col!==a&&(a=c.col,l=q(n,this.top+t+s,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+s,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;We(t,this),this._draw(),Ne(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:s}=this,{align:o,labels:r}=t,a=R.color,l=zt(t.rtl,this.left,this.width),c=N(r.font),{padding:h}=r,d=c.size,f=d/2;let u;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=Pn(r,d),b=function(k,M,v){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const C=D(v.lineWidth,1);if(s.fillStyle=D(v.fillStyle,a),s.lineCap=D(v.lineCap,"butt"),s.lineDashOffset=D(v.lineDashOffset,0),s.lineJoin=D(v.lineJoin,"miter"),s.lineWidth=C,s.strokeStyle=D(v.strokeStyle,a),s.setLineDash(D(v.lineDash,[])),r.usePointStyle){const A={radius:p*Math.SQRT2/2,pointStyle:v.pointStyle,rotation:v.rotation,borderWidth:C},T=l.xPlus(k,g/2),z=M+f;ds(s,A,T,z,r.pointStyleWidth&&g)}else{const A=M+Math.max((d-p)/2,0),T=l.leftForLtr(k,g),z=At(v.borderRadius);s.beginPath(),Object.values(z).some($=>$!==0)?Ie(s,{x:T,y:A,w:g,h:p,radius:z}):s.rect(T,A,g,p),s.fill(),C!==0&&s.stroke()}s.restore()},_=function(k,M,v){It(s,v.text,k,M+m/2,c,{strikethrough:v.hidden,textAlign:l.textAlign(v.textAlign)})},y=this.isHorizontal(),w=this._computeTitleHeight();y?u={x:q(o,this.left+h,this.right-n[0]),y:this.top+h+w,line:0}:u={x:this.left+h,y:q(o,this.top+w+h,this.bottom-e[0].height),line:0},_s(this.ctx,t.textDirection);const x=m+h;this.legendItems.forEach((k,M)=>{s.strokeStyle=k.fontColor,s.fillStyle=k.fontColor;const v=s.measureText(k.text).width,C=l.textAlign(k.textAlign||(k.textAlign=r.textAlign)),A=g+f+v;let T=u.x,z=u.y;l.setWidth(this.width),y?M>0&&T+A+h>this.right&&(z=u.y+=x,u.line++,T=u.x=q(o,this.left+h,this.right-n[u.line])):M>0&&z+x>this.bottom&&(T=u.x=T+e[u.line].width+h,u.line++,z=u.y=q(o,this.top+w+h,this.bottom-e[u.line].height));const $=l.x(T);if(b($,z,k),T=To(C,T+g+f,y?T+A:this.right,t.rtl),_(l.x(T),z,k),y)u.x+=A+h;else if(typeof k.text!="string"){const et=c.lineHeight;u.y+=Ws(k,et)+h}else u.y+=x}),ys(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,n=N(e.font),s=V(e.padding);if(!e.display)return;const o=zt(t.rtl,this.left,this.width),r=this.ctx,a=e.position,l=n.size/2,c=s.top+l;let h,d=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),h=this.top+c,d=q(t.align,d,this.right-f);else{const g=this.columnSizes.reduce((p,m)=>Math.max(p,m.height),0);h=c+q(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}const u=q(a,d,d+f);r.textAlign=o.textAlign(cs(a)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=n.string,It(r,e.text,u,h,n)}_computeTitleHeight(){const t=this.options.title,e=N(t.font),n=V(t.padding);return t.display?e.lineHeight+n.height:0}_getLegendItemAt(t,e){let n,s,o;if(Lt(t,this.left,this.right)&&Lt(e,this.top,this.bottom)){for(o=this.legendHitBoxes,n=0;no.length>r.length?o:r)),t+e.size/2+n.measureText(s).width}function zl(i,t,e){let n=i;return typeof t.text!="string"&&(n=Ws(t,e)),n}function Ws(i,t){const e=i.text?i.text.length:0;return t*e}function Il(i,t){return!!((i==="mousemove"||i==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(i==="click"||i==="mouseup"))}var ih={id:"legend",_element:Cn,start(i,t,e){const n=i.legend=new Cn({ctx:i.ctx,options:e,chart:i});ut.configure(i,n,e),ut.addBox(i,n)},stop(i){ut.removeBox(i,i.legend),delete i.legend},beforeUpdate(i,t,e){const n=i.legend;ut.configure(i,n,e),n.options=e},afterUpdate(i){const t=i.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(i,t){t.replay||i.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(i,t,e){const n=t.datasetIndex,s=e.chart;s.isDatasetVisible(n)?(s.hide(n),t.hidden=!0):(s.show(n),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:i=>i.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:n,textAlign:s,color:o,useBorderRadius:r,borderRadius:a}}=i.legend.options;return i._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(e?0:void 0),h=V(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:n||c.pointStyle,rotation:c.rotation,textAlign:s||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};const Gt={average(i){if(!i.length)return!1;let t,e,n=0,s=0,o=0;for(t=0,e=i.length;t-1?i.split(` -`):i}function El(i,t){const{element:e,datasetIndex:n,index:s}=t,o=i.getDatasetMeta(n).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:i,label:r,parsed:o.getParsed(s),raw:i.data.datasets[n].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:n,element:e}}function Dn(i,t){const e=i.chart.ctx,{body:n,footer:s,title:o}=i,{boxWidth:r,boxHeight:a}=t,l=N(t.bodyFont),c=N(t.titleFont),h=N(t.footerFont),d=o.length,f=s.length,u=n.length,g=V(t.padding);let p=g.height,m=0,b=n.reduce((w,x)=>w+x.before.length+x.lines.length+x.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(p+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const w=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;p+=u*w+(b-u)*l.lineHeight+(b-1)*t.bodySpacing}f&&(p+=t.footerMarginTop+f*h.lineHeight+(f-1)*t.footerSpacing);let _=0;const y=function(w){m=Math.max(m,e.measureText(w).width+_)};return e.save(),e.font=c.string,O(i.title,y),e.font=l.string,O(i.beforeBody.concat(i.afterBody),y),_=t.displayColors?r+2+t.boxPadding:0,O(n,w=>{O(w.before,y),O(w.lines,y),O(w.after,y)}),_=0,e.font=h.string,O(i.footer,y),e.restore(),m+=g.width,{width:m,height:p}}function Fl(i,t){const{y:e,height:n}=t;return ei.height-n/2?"bottom":"center"}function Rl(i,t,e,n){const{x:s,width:o}=n,r=e.caretSize+e.caretPadding;if(i==="left"&&s+o+r>t.width||i==="right"&&s-o-r<0)return!0}function Bl(i,t,e,n){const{x:s,width:o}=e,{width:r,chartArea:{left:a,right:l}}=i;let c="center";return n==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),Rl(c,i,t,e)&&(c="center"),c}function On(i,t,e){const n=e.yAlign||t.yAlign||Fl(i,e);return{xAlign:e.xAlign||t.xAlign||Bl(i,t,e,n),yAlign:n}}function Hl(i,t){let{x:e,width:n}=i;return t==="right"?e-=n:t==="center"&&(e-=n/2),e}function Wl(i,t,e){let{y:n,height:s}=i;return t==="top"?n+=e:t==="bottom"?n-=s+e:n-=s/2,n}function Tn(i,t,e,n){const{caretSize:s,caretPadding:o,cornerRadius:r}=i,{xAlign:a,yAlign:l}=e,c=s+o,{topLeft:h,topRight:d,bottomLeft:f,bottomRight:u}=At(r);let g=Hl(t,a);const p=Wl(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(h,f)+s:a==="right"&&(g+=Math.max(d,u)+s),{x:tt(g,0,n.width-t.width),y:tt(p,0,n.height-t.height)}}function ve(i,t,e){const n=V(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-n.right:i.x+n.left}function Ln(i){return it([],at(i))}function Nl(i,t,e){return xt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function An(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const Ns={beforeTitle:ot,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,n=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(n>0&&t.dataIndex"u"?Ns[t].call(e,n):s}class li extends mt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,n=this.options.setContext(this.getContext()),s=n.enabled&&e.options.animation&&n.animations,o=new ks(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Nl(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:n}=e,s=U(n,"beforeTitle",this,t),o=U(n,"title",this,t),r=U(n,"afterTitle",this,t);let a=[];return a=it(a,at(s)),a=it(a,at(o)),a=it(a,at(r)),a}getBeforeBody(t,e){return Ln(U(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:n}=e,s=[];return O(t,o=>{const r={before:[],lines:[],after:[]},a=An(n,o);it(r.before,at(U(a,"beforeLabel",this,o))),it(r.lines,U(a,"label",this,o)),it(r.after,at(U(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,e){return Ln(U(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:n}=e,s=U(n,"beforeFooter",this,t),o=U(n,"footer",this,t),r=U(n,"afterFooter",this,t);let a=[];return a=it(a,at(s)),a=it(a,at(o)),a=it(a,at(r)),a}_createItems(t){const e=this._active,n=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=e.length;lt.filter(h,d,f,n))),t.itemSort&&(a=a.sort((h,d)=>t.itemSort(h,d,n))),O(a,h=>{const d=An(t.callbacks,h);s.push(U(d,"labelColor",this,h)),o.push(U(d,"labelPointStyle",this,h)),r.push(U(d,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,e){const n=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Gt[n.position].call(this,s,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const l=this._size=Dn(this,n),c=Object.assign({},a,l),h=On(this.chart,n,c),d=Tn(n,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,n,s){const o=this.getCaretPosition(t,n,s);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,n){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=At(a),{x:f,y:u}=t,{width:g,height:p}=e;let m,b,_,y,w,x;return o==="center"?(w=u+p/2,s==="left"?(m=f,b=m-r,y=w+r,x=w-r):(m=f+g,b=m+r,y=w-r,x=w+r),_=m):(s==="left"?b=f+Math.max(l,h)+r:s==="right"?b=f+g-Math.max(c,d)-r:b=this.caretX,o==="top"?(y=u,w=y-r,m=b-r,_=b+r):(y=u+p,w=y+r,m=b+r,_=b-r),x=y),{x1:m,x2:b,x3:_,y1:y,y2:w,y3:x}}drawTitle(t,e,n){const s=this.title,o=s.length;let r,a,l;if(o){const c=zt(n.rtl,this.x,this.width);for(t.x=ve(this,n.titleAlign,n),e.textAlign=c.textAlign(n.titleAlign),e.textBaseline="middle",r=N(n.titleFont),a=n.titleSpacing,e.fillStyle=n.titleColor,e.font=r.string,l=0;l_!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Ie(t,{x:p,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),Ie(t,{x:m,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(p,g,c,l),t.strokeRect(p,g,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[n]}drawBody(t,e,n){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=n,d=N(n.bodyFont);let f=d.lineHeight,u=0;const g=zt(n.rtl,this.x,this.width),p=function(v){e.fillText(v,g.x(t.x+u),t.y+f/2),t.y+=f+o},m=g.textAlign(r);let b,_,y,w,x,k,M;for(e.textAlign=r,e.textBaseline="middle",e.font=d.string,t.x=ve(this,m,n),e.fillStyle=n.bodyColor,O(this.beforeBody,p),u=a&&m!=="right"?r==="center"?c/2+h:c+2+h:0,w=0,k=s.length;w0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,n=this.$animations,s=n&&n.x,o=n&&n.y;if(s||o){const r=Gt[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Dn(this,t),l=Object.assign({},r,this._size),c=On(e,t,l),h=Tn(t,l,c,e);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=V(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=n,this.drawBackground(o,t,s,e),_s(t,e.textDirection),o.y+=r.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),ys(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const n=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!De(n,s),r=this._positionChanged(s,e);(o||r)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,e,n),a=this._positionChanged(r,t),l=e||!De(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,n,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return e;const r=this.chart.getElementsAtEventForMode(t,o.mode,o,n);return o.reverse&&r.reverse(),r}_positionChanged(t,e){const{caretX:n,caretY:s,options:o}=this,r=Gt[o.position].call(this,t,e);return r!==!1&&(n!==r.x||s!==r.y)}}S(li,"positioners",Gt);var nh={id:"tooltip",_element:li,positioners:Gt,afterInit(i,t,e){e&&(i.tooltip=new li({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Ns},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function jl(i,t){const e=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:f}=i,u=o||1,g=h-1,{min:p,max:m}=t,b=!I(r),_=!I(a),y=!I(c),w=(m-p)/(d+1);let x=Ai((m-p)/g/u)*u,k,M,v,C;if(x<1e-14&&!b&&!_)return[{value:p},{value:m}];C=Math.ceil(m/x)-Math.floor(p/x),C>g&&(x=Ai(C*x/g/u)*u),I(l)||(k=Math.pow(10,l),x=Math.ceil(x*k)/k),s==="ticks"?(M=Math.floor(p/x)*x,v=Math.ceil(m/x)*x):(M=p,v=m),b&&_&&o&&vo((a-r)/o,x/1e3)?(C=Math.round(Math.min((a-r)/x,h)),x=(a-r)/C,M=r,v=a):y?(M=b?r:M,v=_?a:v,C=c-1,x=(v-M)/C):(C=(v-M)/x,Jt(C,Math.round(C),x/1e3)?C=Math.round(C):C=Math.ceil(C));const A=Math.max(zi(x),zi(M));k=Math.pow(10,I(l)?A:l),M=Math.round(M*k)/k,v=Math.round(v*k)/k;let T=0;for(b&&(f&&M!==r?(e.push({value:r}),Ma)break;e.push({value:z})}return _&&f&&v!==a?e.length&&Jt(e[e.length-1].value,a,zn(a,w,i))?e[e.length-1].value=a:e.push({value:a}):(!_||v===a)&&e.push({value:v}),e}function zn(i,t,{horizontal:e,minRotation:n}){const s=ft(n),o=(e?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+i).length;return Math.min(t/o,r)}class Re extends Rt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return I(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=e?s:l,a=l=>o=n?o:l;if(t){const l=pt(s),c=pt(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:n}=t,s;return n?(s=Math.ceil(this.max/n)-Math.floor(this.min/n)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${n} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();n=Math.max(2,n);const s={maxTicks:n,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,r=jl(s,o);return t.bounds==="ticks"&&ss(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.configure(),this.options.offset&&t.length){const s=(n-e)/Math.max(t.length-1,1)/2;e-=s,n+=s}this._startValue=e,this._endValue=n,this._valueRange=n-e}getLabelForValue(t){return _i(t,this.chart.options.locale,this.options.ticks.format)}}class In extends Re{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?t:0,this.max=F(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,n=ft(this.options.ticks.minRotation),s=(t?Math.sin(n):Math.cos(n))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}S(In,"id","linear"),S(In,"defaults",{ticks:{callback:He.formatters.numeric}});const ae=i=>Math.floor(dt(i)),wt=(i,t)=>Math.pow(10,ae(i)+t);function En(i){return i/Math.pow(10,ae(i))===1}function Fn(i,t,e){const n=Math.pow(10,e),s=Math.floor(i/n);return Math.ceil(t/n)-s}function Vl(i,t){const e=t-i;let n=ae(e);for(;Fn(i,t,n)>10;)n++;for(;Fn(i,t,n)<10;)n--;return Math.min(n,ae(i))}function $l(i,{min:t,max:e}){t=G(i.min,t);const n=[],s=ae(t);let o=Vl(t,e),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,h=Math.floor((t-l)/a/10)*a*10;let d=Math.floor((c-h)/Math.pow(10,o)),f=G(i.min,Math.round((l+h+d*Math.pow(10,o))*r)/r);for(;f=10?d=d<15?15:20:d++,d>=20&&(o++,d=2,r=o>=0?1:r),f=Math.round((l+h+d*Math.pow(10,o))*r)/r;const u=G(i.max,f);return n.push({value:u,major:En(u),significand:d}),n}class Rn extends Rt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const n=Re.prototype.parse.apply(this,[t,e]);if(n===0){this._zero=!0;return}return F(n)&&n>0?n:null}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?Math.max(0,t):null,this.max=F(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!F(this._userMin)&&(this.min=t===wt(this.min,0)?wt(this.min,-1):wt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let n=this.min,s=this.max;const o=a=>n=t?n:a,r=a=>s=e?s:a;n===s&&(n<=0?(o(1),r(10)):(o(wt(n,-1)),r(wt(s,1)))),n<=0&&o(wt(s,-1)),s<=0&&r(wt(n,1)),this.min=n,this.max=s}buildTicks(){const t=this.options,e={min:this._userMin,max:this._userMax},n=$l(e,this);return t.bounds==="ticks"&&ss(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}getLabelForValue(t){return t===void 0?"0":_i(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=dt(t),this._valueRange=dt(this.max)-dt(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(dt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}S(Rn,"id","logarithmic"),S(Rn,"defaults",{ticks:{callback:He.formatters.logarithmic,major:{enabled:!0}}});function ci(i){const t=i.ticks;if(t.display&&i.display){const e=V(t.backdropPadding);return D(t.font&&t.font.size,R.font.size)+e.height}return 0}function Ul(i,t,e){return e=E(e)?e:[e],{w:jo(i,t.string,e),h:e.length*t.lineHeight}}function Bn(i,t,e,n,s){return i===n||i===s?{start:t-e/2,end:t+e/2}:is?{start:t-e,end:t}:{start:t,end:t+e}}function Yl(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),n=[],s=[],o=i._pointLabels.length,r=i.options.pointLabels,a=r.centerPointLabels?j/o:0;for(let l=0;lt.r&&(a=(n.end-t.r)/o,i.r=Math.max(i.r,t.r+a)),s.startt.b&&(l=(s.end-t.b)/r,i.b=Math.max(i.b,t.b+l))}function Xl(i,t,e){const n=i.drawingArea,{extra:s,additionalAngle:o,padding:r,size:a}=e,l=i.getPointPosition(t,n+s+r,o),c=Math.round(mi(Z(l.angle+X))),h=Jl(l.y,a.h,c),d=Zl(c),f=Ql(l.x,a.w,d);return{visible:!0,x:l.x,y:h,textAlign:d,left:f,top:h,right:f+a.w,bottom:h+a.h}}function ql(i,t){if(!t)return!0;const{left:e,top:n,right:s,bottom:o}=i;return!(ct({x:e,y:n},t)||ct({x:e,y:o},t)||ct({x:s,y:n},t)||ct({x:s,y:o},t))}function Gl(i,t,e){const n=[],s=i._pointLabels.length,o=i.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:ci(o)/2,additionalAngle:r?j/s:0};let c;for(let h=0;h270||e<90)&&(i-=t),i}function tc(i,t,e){const{left:n,top:s,right:o,bottom:r}=e,{backdropColor:a}=t;if(!I(a)){const l=At(t.borderRadius),c=V(t.backdropPadding);i.fillStyle=a;const h=n-c.left,d=s-c.top,f=o-n+c.width,u=r-s+c.height;Object.values(l).some(g=>g!==0)?(i.beginPath(),Ie(i,{x:h,y:d,w:f,h:u,radius:l}),i.fill()):i.fillRect(h,d,f,u)}}function ec(i,t){const{ctx:e,options:{pointLabels:n}}=i;for(let s=t-1;s>=0;s--){const o=i._pointLabelItems[s];if(!o.visible)continue;const r=n.setContext(i.getPointLabelContext(s));tc(e,r,o);const a=N(r.font),{x:l,y:c,textAlign:h}=o;It(e,i._pointLabels[s],l,c+a.lineHeight/2,a,{color:r.color,textAlign:h,textBaseline:"middle"})}}function js(i,t,e,n){const{ctx:s}=i;if(e)s.arc(i.xCenter,i.yCenter,t,0,Q);else{let o=i.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r{const s=P(this.options.pointLabels.callback,[e,n],this);return s||s===0?s:""}).filter((e,n)=>this.chart.getDataVisibility(n))}fit(){const t=this.options;t.display&&t.pointLabels.display?Yl(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,n,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((n-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,n,s))}getIndexAngle(t){const e=Q/(this._pointLabels.length||1),n=this.options.startAngle||0;return Z(t*e+ft(n))}getDistanceFromCenterForValue(t){if(I(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(I(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t{if(d!==0){l=this.getDistanceFromCenterForValue(h.value);const f=this.getContext(d),u=s.setContext(f),g=o.setContext(f);ic(this,u,l,r,g)}}),n.display){for(t.save(),a=r-1;a>=0;a--){const h=n.setContext(this.getPointLabelContext(a)),{color:d,lineWidth:f}=h;!f||!d||(t.lineWidth=f,t.strokeStyle=d,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,n=e.ticks;if(!n.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&!e.reverse)return;const c=n.setContext(this.getContext(l)),h=N(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const d=V(c.backdropPadding);t.fillRect(-r/2-d.left,-o-h.size/2-d.top,r+d.width,h.size+d.height)}It(t,a.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}S(we,"id","radialLinear"),S(we,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:He.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),S(we,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),S(we,"descriptors",{angleLines:{_fallback:"grid"}});const Ve={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},K=Object.keys(Ve);function Hn(i,t){return i-t}function Wn(i,t){if(I(t))return null;const e=i._adapter,{parser:n,round:s,isoWeekday:o}=i._parseOpts;let r=t;return typeof n=="function"&&(r=n(r)),F(r)||(r=typeof n=="string"?e.parse(r,n):e.parse(r)),r===null?null:(s&&(r=s==="week"&&(oe(o)||o===!0)?e.startOf(r,"isoWeek",o):e.startOf(r,s)),+r)}function Nn(i,t,e,n){const s=K.length;for(let o=K.indexOf(i);o=K.indexOf(e);o--){const r=K[o];if(Ve[r].common&&i._adapter.diff(s,n,r)>=t-1)return r}return K[e?K.indexOf(e):0]}function oc(i){for(let t=K.indexOf(i)+1,e=K.length;t=t?e[n]:e[s];i[o]=!0}}function rc(i,t,e,n){const s=i._adapter,o=+s.startOf(t[0].value,n),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,n))l=e[a],l>=0&&(t[l].major=!0);return t}function Vn(i,t,e){const n=[],s={},o=t.length;let r,a;for(r=0;r+t.value))}initOffsets(t=[]){let e=0,n=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?e=1-s:e=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?n=o:n=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;e=tt(e,0,r),n=tt(n,0,r),this._offsets={start:e,end:n,factor:1/(e+1+n)}}_generate(){const t=this._adapter,e=this.min,n=this.max,s=this.options,o=s.time,r=o.unit||Nn(o.minUnit,e,n,this._getLabelCapacity(e)),a=D(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=oe(l)||l===!0,h={};let d=e,f,u;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":r),t.diff(n,e,r)>1e5*a)throw new Error(e+" and "+n+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(f=d,u=0;f+p)}getLabelForValue(t){const e=this._adapter,n=this.options.time;return n.tooltipFormat?e.format(t,n.tooltipFormat):e.format(t,n.displayFormats.datetime)}format(t,e){const s=this.options.time.displayFormats,o=this._unit,r=e||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,e,n,s){const o=this.options,r=o.ticks.callback;if(r)return P(r,[t,e,n],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],d=c&&a[c],f=n[e],u=c&&d&&f&&f.major;return this._adapter.format(t,s||(u?d:h))}generateTickLabels(t){let e,n,s;for(e=0,n=t.length;e0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,n;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,n=s.length;e=i[n].pos&&t<=i[s].pos&&({lo:n,hi:s}=kt(i,"pos",t)),{pos:o,time:a}=i[n],{pos:r,time:l}=i[s]):(t>=i[n].time&&t<=i[s].time&&({lo:n,hi:s}=kt(i,"time",t)),{time:o,pos:a}=i[n],{time:r,pos:l}=i[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class $n extends Be{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Me(e,this.min),this._tableRange=Me(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:n}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r=e&&c<=n&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:n,pos:1}];for(r=0,a=s.length;rs-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),n=this.getLabelTimestamps();return e.length&&n.length?t=this.normalize(e.concat(n)):t=e.length?e:n,t=this._cache.all=t,t}getDecimalForValue(t){return(Me(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return Me(this._table,n*this._tableRange+this._minPos,!0)}}S($n,"id","timeseries"),S($n,"defaults",Be.defaults);const Vs={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},ac={type:{type:String,required:!0},...Vs},lc=oo[0]==="2"?(i,t)=>Object.assign(i,{attrs:t}):(i,t)=>Object.assign(i,t);function Tt(i){return is(i)?ti(i):i}function cc(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:i;return is(t)?new Proxy(i,{}):i}function hc(i,t){const e=i.options;e&&t&&Object.assign(e,t)}function $s(i,t){i.labels=t}function Us(i,t,e){const n=[];i.datasets=t.map(s=>{const o=i.datasets.find(r=>r[e]===s[e]);return!o||!s.data||n.includes(o)?{...s}:(n.push(o),Object.assign(o,s),o)})}function dc(i,t){const e={labels:[],datasets:[]};return $s(e,i.labels),Us(e,i.datasets,t),e}const fc=Jn({props:ac,setup(i,t){let{expose:e}=t;const n=ro(null),s=ts(null);e({chart:s});const o=()=>{if(!n.value)return;const{type:l,data:c,options:h,plugins:d,datasetIdKey:f}=i,u=dc(c,f),g=cc(u,c);s.value=new Si(n.value,{type:l,data:g,options:{...h},plugins:d})},r=()=>{const l=ti(s.value);l&&(l.destroy(),s.value=null)},a=l=>{l.update(i.updateMode)};return ao(o),lo(r),co([()=>i.options,()=>i.data],(l,c)=>{let[h,d]=l,[f,u]=c;const g=ti(s.value);if(!g)return;let p=!1;if(h){const m=Tt(h),b=Tt(f);m&&m!==b&&(hc(g,m),p=!0)}if(d){const m=Tt(d.labels),b=Tt(u.labels),_=Tt(d.datasets),y=Tt(u.datasets);m!==b&&($s(g.config.data,m),p=!0),_&&_!==y&&(Us(g.config.data,_,i.datasetIdKey),p=!0)}p&&a(g)},{deep:!0}),()=>es("canvas",{ref:n})}});function uc(i,t){return Si.register(t),Jn({props:Vs,setup(e,n){let{expose:s}=n;const o=ts(null),r=a=>{o.value=a==null?void 0:a.chart};return s({chart:o}),()=>es(fc,lc({ref:r},{type:i,...e}))}})}const sh=uc("line",Se);/*! +`):i}function El(i,t){const{element:e,datasetIndex:n,index:s}=t,o=i.getDatasetMeta(n).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:i,label:r,parsed:o.getParsed(s),raw:i.data.datasets[n].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:n,element:e}}function Dn(i,t){const e=i.chart.ctx,{body:n,footer:s,title:o}=i,{boxWidth:r,boxHeight:a}=t,l=N(t.bodyFont),c=N(t.titleFont),h=N(t.footerFont),d=o.length,f=s.length,u=n.length,g=V(t.padding);let p=g.height,m=0,b=n.reduce((w,x)=>w+x.before.length+x.lines.length+x.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(p+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const w=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;p+=u*w+(b-u)*l.lineHeight+(b-1)*t.bodySpacing}f&&(p+=t.footerMarginTop+f*h.lineHeight+(f-1)*t.footerSpacing);let _=0;const y=function(w){m=Math.max(m,e.measureText(w).width+_)};return e.save(),e.font=c.string,O(i.title,y),e.font=l.string,O(i.beforeBody.concat(i.afterBody),y),_=t.displayColors?r+2+t.boxPadding:0,O(n,w=>{O(w.before,y),O(w.lines,y),O(w.after,y)}),_=0,e.font=h.string,O(i.footer,y),e.restore(),m+=g.width,{width:m,height:p}}function Fl(i,t){const{y:e,height:n}=t;return ei.height-n/2?"bottom":"center"}function Rl(i,t,e,n){const{x:s,width:o}=n,r=e.caretSize+e.caretPadding;if(i==="left"&&s+o+r>t.width||i==="right"&&s-o-r<0)return!0}function Bl(i,t,e,n){const{x:s,width:o}=e,{width:r,chartArea:{left:a,right:l}}=i;let c="center";return n==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),Rl(c,i,t,e)&&(c="center"),c}function On(i,t,e){const n=e.yAlign||t.yAlign||Fl(i,e);return{xAlign:e.xAlign||t.xAlign||Bl(i,t,e,n),yAlign:n}}function Hl(i,t){let{x:e,width:n}=i;return t==="right"?e-=n:t==="center"&&(e-=n/2),e}function Wl(i,t,e){let{y:n,height:s}=i;return t==="top"?n+=e:t==="bottom"?n-=s+e:n-=s/2,n}function Tn(i,t,e,n){const{caretSize:s,caretPadding:o,cornerRadius:r}=i,{xAlign:a,yAlign:l}=e,c=s+o,{topLeft:h,topRight:d,bottomLeft:f,bottomRight:u}=At(r);let g=Hl(t,a);const p=Wl(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(h,f)+s:a==="right"&&(g+=Math.max(d,u)+s),{x:tt(g,0,n.width-t.width),y:tt(p,0,n.height-t.height)}}function ve(i,t,e){const n=V(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-n.right:i.x+n.left}function Ln(i){return it([],at(i))}function Nl(i,t,e){return xt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function An(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const Ns={beforeTitle:ot,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,n=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(n>0&&t.dataIndex"u"?Ns[t].call(e,n):s}class li extends mt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,n=this.options.setContext(this.getContext()),s=n.enabled&&e.options.animation&&n.animations,o=new ks(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Nl(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:n}=e,s=U(n,"beforeTitle",this,t),o=U(n,"title",this,t),r=U(n,"afterTitle",this,t);let a=[];return a=it(a,at(s)),a=it(a,at(o)),a=it(a,at(r)),a}getBeforeBody(t,e){return Ln(U(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:n}=e,s=[];return O(t,o=>{const r={before:[],lines:[],after:[]},a=An(n,o);it(r.before,at(U(a,"beforeLabel",this,o))),it(r.lines,U(a,"label",this,o)),it(r.after,at(U(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,e){return Ln(U(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:n}=e,s=U(n,"beforeFooter",this,t),o=U(n,"footer",this,t),r=U(n,"afterFooter",this,t);let a=[];return a=it(a,at(s)),a=it(a,at(o)),a=it(a,at(r)),a}_createItems(t){const e=this._active,n=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=e.length;lt.filter(h,d,f,n))),t.itemSort&&(a=a.sort((h,d)=>t.itemSort(h,d,n))),O(a,h=>{const d=An(t.callbacks,h);s.push(U(d,"labelColor",this,h)),o.push(U(d,"labelPointStyle",this,h)),r.push(U(d,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,e){const n=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Gt[n.position].call(this,s,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const l=this._size=Dn(this,n),c=Object.assign({},a,l),h=On(this.chart,n,c),d=Tn(n,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,n,s){const o=this.getCaretPosition(t,n,s);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,n){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=At(a),{x:f,y:u}=t,{width:g,height:p}=e;let m,b,_,y,w,x;return o==="center"?(w=u+p/2,s==="left"?(m=f,b=m-r,y=w+r,x=w-r):(m=f+g,b=m+r,y=w-r,x=w+r),_=m):(s==="left"?b=f+Math.max(l,h)+r:s==="right"?b=f+g-Math.max(c,d)-r:b=this.caretX,o==="top"?(y=u,w=y-r,m=b-r,_=b+r):(y=u+p,w=y+r,m=b+r,_=b-r),x=y),{x1:m,x2:b,x3:_,y1:y,y2:w,y3:x}}drawTitle(t,e,n){const s=this.title,o=s.length;let r,a,l;if(o){const c=zt(n.rtl,this.x,this.width);for(t.x=ve(this,n.titleAlign,n),e.textAlign=c.textAlign(n.titleAlign),e.textBaseline="middle",r=N(n.titleFont),a=n.titleSpacing,e.fillStyle=n.titleColor,e.font=r.string,l=0;l_!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Ie(t,{x:p,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),Ie(t,{x:m,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(p,g,c,l),t.strokeRect(p,g,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[n]}drawBody(t,e,n){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=n,d=N(n.bodyFont);let f=d.lineHeight,u=0;const g=zt(n.rtl,this.x,this.width),p=function(v){e.fillText(v,g.x(t.x+u),t.y+f/2),t.y+=f+o},m=g.textAlign(r);let b,_,y,w,x,k,M;for(e.textAlign=r,e.textBaseline="middle",e.font=d.string,t.x=ve(this,m,n),e.fillStyle=n.bodyColor,O(this.beforeBody,p),u=a&&m!=="right"?r==="center"?c/2+h:c+2+h:0,w=0,k=s.length;w0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,n=this.$animations,s=n&&n.x,o=n&&n.y;if(s||o){const r=Gt[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Dn(this,t),l=Object.assign({},r,this._size),c=On(e,t,l),h=Tn(t,l,c,e);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=V(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=n,this.drawBackground(o,t,s,e),_s(t,e.textDirection),o.y+=r.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),ys(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const n=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!De(n,s),r=this._positionChanged(s,e);(o||r)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,e,n),a=this._positionChanged(r,t),l=e||!De(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,n,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return e;const r=this.chart.getElementsAtEventForMode(t,o.mode,o,n);return o.reverse&&r.reverse(),r}_positionChanged(t,e){const{caretX:n,caretY:s,options:o}=this,r=Gt[o.position].call(this,t,e);return r!==!1&&(n!==r.x||s!==r.y)}}S(li,"positioners",Gt);var nh={id:"tooltip",_element:li,positioners:Gt,afterInit(i,t,e){e&&(i.tooltip=new li({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Ns},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function jl(i,t){const e=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:f}=i,u=o||1,g=h-1,{min:p,max:m}=t,b=!I(r),_=!I(a),y=!I(c),w=(m-p)/(d+1);let x=Ai((m-p)/g/u)*u,k,M,v,C;if(x<1e-14&&!b&&!_)return[{value:p},{value:m}];C=Math.ceil(m/x)-Math.floor(p/x),C>g&&(x=Ai(C*x/g/u)*u),I(l)||(k=Math.pow(10,l),x=Math.ceil(x*k)/k),s==="ticks"?(M=Math.floor(p/x)*x,v=Math.ceil(m/x)*x):(M=p,v=m),b&&_&&o&&vo((a-r)/o,x/1e3)?(C=Math.round(Math.min((a-r)/x,h)),x=(a-r)/C,M=r,v=a):y?(M=b?r:M,v=_?a:v,C=c-1,x=(v-M)/C):(C=(v-M)/x,Jt(C,Math.round(C),x/1e3)?C=Math.round(C):C=Math.ceil(C));const A=Math.max(zi(x),zi(M));k=Math.pow(10,I(l)?A:l),M=Math.round(M*k)/k,v=Math.round(v*k)/k;let T=0;for(b&&(f&&M!==r?(e.push({value:r}),Ma)break;e.push({value:z})}return _&&f&&v!==a?e.length&&Jt(e[e.length-1].value,a,zn(a,w,i))?e[e.length-1].value=a:e.push({value:a}):(!_||v===a)&&e.push({value:v}),e}function zn(i,t,{horizontal:e,minRotation:n}){const s=ft(n),o=(e?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+i).length;return Math.min(t/o,r)}class Re extends Rt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return I(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=e?s:l,a=l=>o=n?o:l;if(t){const l=pt(s),c=pt(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:n}=t,s;return n?(s=Math.ceil(this.max/n)-Math.floor(this.min/n)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${n} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();n=Math.max(2,n);const s={maxTicks:n,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,r=jl(s,o);return t.bounds==="ticks"&&ss(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.configure(),this.options.offset&&t.length){const s=(n-e)/Math.max(t.length-1,1)/2;e-=s,n+=s}this._startValue=e,this._endValue=n,this._valueRange=n-e}getLabelForValue(t){return _i(t,this.chart.options.locale,this.options.ticks.format)}}class In extends Re{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?t:0,this.max=F(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,n=ft(this.options.ticks.minRotation),s=(t?Math.sin(n):Math.cos(n))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}S(In,"id","linear"),S(In,"defaults",{ticks:{callback:He.formatters.numeric}});const ae=i=>Math.floor(dt(i)),wt=(i,t)=>Math.pow(10,ae(i)+t);function En(i){return i/Math.pow(10,ae(i))===1}function Fn(i,t,e){const n=Math.pow(10,e),s=Math.floor(i/n);return Math.ceil(t/n)-s}function Vl(i,t){const e=t-i;let n=ae(e);for(;Fn(i,t,n)>10;)n++;for(;Fn(i,t,n)<10;)n--;return Math.min(n,ae(i))}function $l(i,{min:t,max:e}){t=G(i.min,t);const n=[],s=ae(t);let o=Vl(t,e),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,h=Math.floor((t-l)/a/10)*a*10;let d=Math.floor((c-h)/Math.pow(10,o)),f=G(i.min,Math.round((l+h+d*Math.pow(10,o))*r)/r);for(;f=10?d=d<15?15:20:d++,d>=20&&(o++,d=2,r=o>=0?1:r),f=Math.round((l+h+d*Math.pow(10,o))*r)/r;const u=G(i.max,f);return n.push({value:u,major:En(u),significand:d}),n}class Rn extends Rt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const n=Re.prototype.parse.apply(this,[t,e]);if(n===0){this._zero=!0;return}return F(n)&&n>0?n:null}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?Math.max(0,t):null,this.max=F(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!F(this._userMin)&&(this.min=t===wt(this.min,0)?wt(this.min,-1):wt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let n=this.min,s=this.max;const o=a=>n=t?n:a,r=a=>s=e?s:a;n===s&&(n<=0?(o(1),r(10)):(o(wt(n,-1)),r(wt(s,1)))),n<=0&&o(wt(s,-1)),s<=0&&r(wt(n,1)),this.min=n,this.max=s}buildTicks(){const t=this.options,e={min:this._userMin,max:this._userMax},n=$l(e,this);return t.bounds==="ticks"&&ss(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}getLabelForValue(t){return t===void 0?"0":_i(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=dt(t),this._valueRange=dt(this.max)-dt(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(dt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}S(Rn,"id","logarithmic"),S(Rn,"defaults",{ticks:{callback:He.formatters.logarithmic,major:{enabled:!0}}});function ci(i){const t=i.ticks;if(t.display&&i.display){const e=V(t.backdropPadding);return D(t.font&&t.font.size,R.font.size)+e.height}return 0}function Ul(i,t,e){return e=E(e)?e:[e],{w:jo(i,t.string,e),h:e.length*t.lineHeight}}function Bn(i,t,e,n,s){return i===n||i===s?{start:t-e/2,end:t+e/2}:is?{start:t-e,end:t}:{start:t,end:t+e}}function Yl(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),n=[],s=[],o=i._pointLabels.length,r=i.options.pointLabels,a=r.centerPointLabels?j/o:0;for(let l=0;lt.r&&(a=(n.end-t.r)/o,i.r=Math.max(i.r,t.r+a)),s.startt.b&&(l=(s.end-t.b)/r,i.b=Math.max(i.b,t.b+l))}function Xl(i,t,e){const n=i.drawingArea,{extra:s,additionalAngle:o,padding:r,size:a}=e,l=i.getPointPosition(t,n+s+r,o),c=Math.round(mi(Z(l.angle+X))),h=Jl(l.y,a.h,c),d=Zl(c),f=Ql(l.x,a.w,d);return{visible:!0,x:l.x,y:h,textAlign:d,left:f,top:h,right:f+a.w,bottom:h+a.h}}function ql(i,t){if(!t)return!0;const{left:e,top:n,right:s,bottom:o}=i;return!(ct({x:e,y:n},t)||ct({x:e,y:o},t)||ct({x:s,y:n},t)||ct({x:s,y:o},t))}function Gl(i,t,e){const n=[],s=i._pointLabels.length,o=i.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:ci(o)/2,additionalAngle:r?j/s:0};let c;for(let h=0;h270||e<90)&&(i-=t),i}function tc(i,t,e){const{left:n,top:s,right:o,bottom:r}=e,{backdropColor:a}=t;if(!I(a)){const l=At(t.borderRadius),c=V(t.backdropPadding);i.fillStyle=a;const h=n-c.left,d=s-c.top,f=o-n+c.width,u=r-s+c.height;Object.values(l).some(g=>g!==0)?(i.beginPath(),Ie(i,{x:h,y:d,w:f,h:u,radius:l}),i.fill()):i.fillRect(h,d,f,u)}}function ec(i,t){const{ctx:e,options:{pointLabels:n}}=i;for(let s=t-1;s>=0;s--){const o=i._pointLabelItems[s];if(!o.visible)continue;const r=n.setContext(i.getPointLabelContext(s));tc(e,r,o);const a=N(r.font),{x:l,y:c,textAlign:h}=o;It(e,i._pointLabels[s],l,c+a.lineHeight/2,a,{color:r.color,textAlign:h,textBaseline:"middle"})}}function js(i,t,e,n){const{ctx:s}=i;if(e)s.arc(i.xCenter,i.yCenter,t,0,Q);else{let o=i.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r{const s=P(this.options.pointLabels.callback,[e,n],this);return s||s===0?s:""}).filter((e,n)=>this.chart.getDataVisibility(n))}fit(){const t=this.options;t.display&&t.pointLabels.display?Yl(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,n,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((n-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,n,s))}getIndexAngle(t){const e=Q/(this._pointLabels.length||1),n=this.options.startAngle||0;return Z(t*e+ft(n))}getDistanceFromCenterForValue(t){if(I(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(I(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t{if(d!==0){l=this.getDistanceFromCenterForValue(h.value);const f=this.getContext(d),u=s.setContext(f),g=o.setContext(f);ic(this,u,l,r,g)}}),n.display){for(t.save(),a=r-1;a>=0;a--){const h=n.setContext(this.getPointLabelContext(a)),{color:d,lineWidth:f}=h;!f||!d||(t.lineWidth=f,t.strokeStyle=d,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,n=e.ticks;if(!n.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&!e.reverse)return;const c=n.setContext(this.getContext(l)),h=N(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const d=V(c.backdropPadding);t.fillRect(-r/2-d.left,-o-h.size/2-d.top,r+d.width,h.size+d.height)}It(t,a.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}S(we,"id","radialLinear"),S(we,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:He.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),S(we,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),S(we,"descriptors",{angleLines:{_fallback:"grid"}});const Ve={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},K=Object.keys(Ve);function Hn(i,t){return i-t}function Wn(i,t){if(I(t))return null;const e=i._adapter,{parser:n,round:s,isoWeekday:o}=i._parseOpts;let r=t;return typeof n=="function"&&(r=n(r)),F(r)||(r=typeof n=="string"?e.parse(r,n):e.parse(r)),r===null?null:(s&&(r=s==="week"&&(oe(o)||o===!0)?e.startOf(r,"isoWeek",o):e.startOf(r,s)),+r)}function Nn(i,t,e,n){const s=K.length;for(let o=K.indexOf(i);o=K.indexOf(e);o--){const r=K[o];if(Ve[r].common&&i._adapter.diff(s,n,r)>=t-1)return r}return K[e?K.indexOf(e):0]}function oc(i){for(let t=K.indexOf(i)+1,e=K.length;t=t?e[n]:e[s];i[o]=!0}}function rc(i,t,e,n){const s=i._adapter,o=+s.startOf(t[0].value,n),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,n))l=e[a],l>=0&&(t[l].major=!0);return t}function Vn(i,t,e){const n=[],s={},o=t.length;let r,a;for(r=0;r+t.value))}initOffsets(t=[]){let e=0,n=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?e=1-s:e=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?n=o:n=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;e=tt(e,0,r),n=tt(n,0,r),this._offsets={start:e,end:n,factor:1/(e+1+n)}}_generate(){const t=this._adapter,e=this.min,n=this.max,s=this.options,o=s.time,r=o.unit||Nn(o.minUnit,e,n,this._getLabelCapacity(e)),a=D(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=oe(l)||l===!0,h={};let d=e,f,u;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":r),t.diff(n,e,r)>1e5*a)throw new Error(e+" and "+n+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(f=d,u=0;f+p)}getLabelForValue(t){const e=this._adapter,n=this.options.time;return n.tooltipFormat?e.format(t,n.tooltipFormat):e.format(t,n.displayFormats.datetime)}format(t,e){const s=this.options.time.displayFormats,o=this._unit,r=e||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,e,n,s){const o=this.options,r=o.ticks.callback;if(r)return P(r,[t,e,n],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],d=c&&a[c],f=n[e],u=c&&d&&f&&f.major;return this._adapter.format(t,s||(u?d:h))}generateTickLabels(t){let e,n,s;for(e=0,n=t.length;e0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,n;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,n=s.length;e=i[n].pos&&t<=i[s].pos&&({lo:n,hi:s}=kt(i,"pos",t)),{pos:o,time:a}=i[n],{pos:r,time:l}=i[s]):(t>=i[n].time&&t<=i[s].time&&({lo:n,hi:s}=kt(i,"time",t)),{time:o,pos:a}=i[n],{time:r,pos:l}=i[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class $n extends Be{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Me(e,this.min),this._tableRange=Me(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:n}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r=e&&c<=n&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:n,pos:1}];for(r=0,a=s.length;rs-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),n=this.getLabelTimestamps();return e.length&&n.length?t=this.normalize(e.concat(n)):t=e.length?e:n,t=this._cache.all=t,t}getDecimalForValue(t){return(Me(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return Me(this._table,n*this._tableRange+this._minPos,!0)}}S($n,"id","timeseries"),S($n,"defaults",Be.defaults);const Vs={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},ac={type:{type:String,required:!0},...Vs},lc=oo[0]==="2"?(i,t)=>Object.assign(i,{attrs:t}):(i,t)=>Object.assign(i,t);function Tt(i){return is(i)?ti(i):i}function cc(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:i;return is(t)?new Proxy(i,{}):i}function hc(i,t){const e=i.options;e&&t&&Object.assign(e,t)}function $s(i,t){i.labels=t}function Us(i,t,e){const n=[];i.datasets=t.map(s=>{const o=i.datasets.find(r=>r[e]===s[e]);return!o||!s.data||n.includes(o)?{...s}:(n.push(o),Object.assign(o,s),o)})}function dc(i,t){const e={labels:[],datasets:[]};return $s(e,i.labels),Us(e,i.datasets,t),e}function sh(i,t){return i.getElementsAtEventForMode(t,"nearest",{intersect:!0},!1)}const fc=Jn({props:ac,setup(i,t){let{expose:e}=t;const n=ro(null),s=ts(null);e({chart:s});const o=()=>{if(!n.value)return;const{type:l,data:c,options:h,plugins:d,datasetIdKey:f}=i,u=dc(c,f),g=cc(u,c);s.value=new Si(n.value,{type:l,data:g,options:{...h},plugins:d})},r=()=>{const l=ti(s.value);l&&(l.destroy(),s.value=null)},a=l=>{l.update(i.updateMode)};return ao(o),lo(r),co([()=>i.options,()=>i.data],(l,c)=>{let[h,d]=l,[f,u]=c;const g=ti(s.value);if(!g)return;let p=!1;if(h){const m=Tt(h),b=Tt(f);m&&m!==b&&(hc(g,m),p=!0)}if(d){const m=Tt(d.labels),b=Tt(u.labels),_=Tt(d.datasets),y=Tt(u.datasets);m!==b&&($s(g.config.data,m),p=!0),_&&_!==y&&(Us(g.config.data,_,i.datasetIdKey),p=!0)}p&&a(g)},{deep:!0}),()=>es("canvas",{ref:n})}});function uc(i,t){return Si.register(t),Jn({props:Vs,setup(e,n){let{expose:s}=n;const o=ts(null),r=a=>{o.value=a==null?void 0:a.chart};return s({chart:o}),()=>es(fc,lc({ref:r},{type:i,...e}))}})}const oh=uc("line",Se);/*! * chartjs-adapter-luxon v1.3.1 * https://www.chartjs.org * (c) 2023 chartjs-adapter-luxon Contributors @@ -20,4 +20,4 @@ var no=Object.defineProperty;var so=(i,t,e)=>t in i?no(i,t,{enumerable:!0,config * undefined * (c) 2016-2023 chartjs-plugin-zoom Contributors * Released under the MIT License - */const le=i=>i&&i.enabled&&i.modifierKey,Ys=(i,t)=>i&&t[i+"Key"],Ci=(i,t)=>i&&!t[i+"Key"];function bt(i,t,e){return i===void 0?!0:typeof i=="string"?i.indexOf(t)!==-1:typeof i=="function"?i({chart:e}).indexOf(t)!==-1:!1}function Je(i,t){return typeof i=="function"&&(i=i({chart:t})),typeof i=="string"?{x:i.indexOf("x")!==-1,y:i.indexOf("y")!==-1}:{x:!1,y:!1}}function pc(i,t){let e;return function(){return clearTimeout(e),e=setTimeout(i,t),t}}function mc({x:i,y:t},e){const n=e.scales,s=Object.keys(n);for(let o=0;o=r.top&&t<=r.bottom&&i>=r.left&&i<=r.right)return r}return null}function Ks(i,t,e){const{mode:n="xy",scaleMode:s,overScaleMode:o}=i||{},r=mc(t,e),a=Je(n,e),l=Je(s,e);if(o){const h=Je(o,e);for(const d of["x","y"])h[d]&&(l[d]=a[d],a[d]=!1)}if(r&&l[r.axis])return[r];const c=[];return O(e.scales,function(h){a[h.axis]&&c.push(h)}),c}const hi=new WeakMap;function H(i){let t=hi.get(i);return t||(t={originalScaleLimits:{},updatedScaleLimits:{},handlers:{},panDelta:{}},hi.set(i,t)),t}function bc(i){hi.delete(i)}function Xs(i,t,e){const n=i.max-i.min,s=n*(t-1),o=i.isHorizontal()?e.x:e.y,r=Math.max(0,Math.min(1,(i.getValueForPixel(o)-i.min)/n||0)),a=1-r;return{min:s*r,max:s*a}}function Un(i,t,e,n,s){let o=e[n];if(o==="original"){const r=i.originalScaleLimits[t.id][n];o=D(r.options,r.scale)}return D(o,s)}function xc(i,t,e){const n=i.getValueForPixel(t),s=i.getValueForPixel(e);return{min:Math.min(n,s),max:Math.max(n,s)}}function Bt(i,{min:t,max:e},n,s=!1){const o=H(i.chart),{id:r,axis:a,options:l}=i,c=n&&(n[r]||n[a])||{},{minRange:h=0}=c,d=Un(o,i,c,"min",-1/0),f=Un(o,i,c,"max",1/0),u=s?Math.max(e-t,h):i.max-i.min,g=(u-e+t)/2;return t-=g,e+=g,tf&&(e=f,t=Math.max(f-u,d)),l.min=t,l.max=e,o.updatedScaleLimits[i.id]={min:t,max:e},i.parse(t)!==i.min||i.parse(e)!==i.max}function _c(i,t,e,n){const s=Xs(i,t,e),o={min:i.min+s.min,max:i.max-s.max};return Bt(i,o,n,!0)}function yc(i,t,e,n){Bt(i,xc(i,t,e),n,!0)}const Yn=i=>i===0||isNaN(i)?0:i<0?Math.min(Math.round(i),-1):Math.max(Math.round(i),1);function vc(i){const e=i.getLabels().length-1;i.min>0&&(i.min-=1),i.maxl&&(o=Math.max(0,o-c),r=a===1?o:o+a,h=o===0),Bt(i,{min:o,max:r},e)||h}const Sc={second:500,minute:30*1e3,hour:30*60*1e3,day:12*60*60*1e3,week:3.5*24*60*60*1e3,month:15*24*60*60*1e3,quarter:60*24*60*60*1e3,year:182*24*60*60*1e3};function qs(i,t,e,n=!1){const{min:s,max:o,options:r}=i,a=r.time&&r.time.round,l=Sc[a]||0,c=i.getValueForPixel(i.getPixelForValue(s+l)-t),h=i.getValueForPixel(i.getPixelForValue(o+l)-t),{min:d=-1/0,max:f=1/0}=n&&e&&e[i.axis]||{};return isNaN(c)||isNaN(h)||cf?!0:Bt(i,{min:c,max:h},e,n)}function Kn(i,t,e){return qs(i,t,e,!0)}const di={category:wc,default:_c},fi={default:yc},ui={category:kc,default:qs,logarithmic:Kn,timeseries:Kn};function Pc(i,t,e){const{id:n,options:{min:s,max:o}}=i;if(!t[n]||!e[n])return!0;const r=e[n];return r.min!==s||r.max!==o}function Xn(i,t){O(i,(e,n)=>{t[n]||delete i[n]})}function Ht(i,t){const{scales:e}=i,{originalScaleLimits:n,updatedScaleLimits:s}=t;return O(e,function(o){Pc(o,n,s)&&(n[o.id]={min:{scale:o.min,options:o.options.min},max:{scale:o.max,options:o.options.max}})}),Xn(n,e),Xn(s,e),n}function qn(i,t,e,n){const s=di[i.type]||di.default;P(s,[i,t,e,n])}function Gn(i,t,e,n,s){const o=fi[i.type]||fi.default;P(o,[i,t,e,n,s])}function Cc(i){const t=i.chartArea;return{x:(t.left+t.right)/2,y:(t.top+t.bottom)/2}}function Di(i,t,e="none"){const{x:n=1,y:s=1,focalPoint:o=Cc(i)}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{limits:a,zoom:l}}=r;Ht(i,r);const c=n!==1,h=s!==1,d=Ks(l,o,i);O(d||i.scales,function(f){f.isHorizontal()&&c?qn(f,n,o,a):!f.isHorizontal()&&h&&qn(f,s,o,a)}),i.update(e),P(l.onZoom,[{chart:i}])}function Gs(i,t,e,n="none"){const s=H(i),{options:{limits:o,zoom:r}}=s,{mode:a="xy"}=r;Ht(i,s);const l=bt(a,"x",i),c=bt(a,"y",i);O(i.scales,function(h){h.isHorizontal()&&l?Gn(h,t.x,e.x,o):!h.isHorizontal()&&c&&Gn(h,t.y,e.y,o)}),i.update(n),P(r.onZoom,[{chart:i}])}function Dc(i,t,e,n="none"){Ht(i,H(i));const s=i.scales[t];Bt(s,e,void 0,!0),i.update(n)}function Oc(i,t="default"){const e=H(i),n=Ht(i,e);O(i.scales,function(s){const o=s.options;n[s.id]?(o.min=n[s.id].min.options,o.max=n[s.id].max.options):(delete o.min,delete o.max)}),i.update(t),P(e.options.zoom.onZoomComplete,[{chart:i}])}function Tc(i,t){const e=i.originalScaleLimits[t];if(!e)return;const{min:n,max:s}=e;return D(s.options,s.scale)-D(n.options,n.scale)}function Lc(i){const t=H(i);let e=1,n=1;return O(i.scales,function(s){const o=Tc(t,s.id);if(o){const r=Math.round(o/(s.max-s.min)*100)/100;e=Math.min(e,r),n=Math.max(n,r)}}),e<1?e:n}function Zn(i,t,e,n){const{panDelta:s}=n,o=s[i.id]||0;pt(o)===pt(t)&&(t+=o);const r=ui[i.type]||ui.default;P(r,[i,t,e])?s[i.id]=0:s[i.id]=t}function Zs(i,t,e,n="none"){const{x:s=0,y:o=0}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{pan:a,limits:l}}=r,{onPan:c}=a||{};Ht(i,r);const h=s!==0,d=o!==0;O(e||i.scales,function(f){f.isHorizontal()&&h?Zn(f,s,l,r):!f.isHorizontal()&&d&&Zn(f,o,l,r)}),i.update(n),P(c,[{chart:i}])}function Qs(i){const t=H(i);Ht(i,t);const e={};for(const n of Object.keys(i.scales)){const{min:s,max:o}=t.originalScaleLimits[n]||{min:{},max:{}};e[n]={min:s.scale,max:o.scale}}return e}function Ac(i){const t=Qs(i);for(const e of Object.keys(i.scales)){const{min:n,max:s}=t[e];if(n!==void 0&&i.scales[e].min!==n||s!==void 0&&i.scales[e].max!==s)return!0}return!1}function Y(i,t){const{handlers:e}=H(i),n=e[t];n&&n.target&&(n.target.removeEventListener(t,n),delete e[t])}function ne(i,t,e,n){const{handlers:s,options:o}=H(i),r=s[e];r&&r.target===t||(Y(i,e),s[e]=a=>n(i,a,o),s[e].target=t,t.addEventListener(e,s[e]))}function zc(i,t){const e=H(i);e.dragStart&&(e.dragging=!0,e.dragEnd=t,i.update("none"))}function Ic(i,t){const e=H(i);!e.dragStart||t.key!=="Escape"||(Y(i,"keydown"),e.dragging=!1,e.dragStart=e.dragEnd=null,i.update("none"))}function Js(i,t,e){const{onZoomStart:n,onZoomRejected:s}=e;if(n){const o=st(t,i);if(P(n,[{chart:i,event:t,point:o}])===!1)return P(s,[{chart:i,event:t}]),!1}}function Ec(i,t){const e=H(i),{pan:n,zoom:s={}}=e.options;if(t.button!==0||Ys(le(n),t)||Ci(le(s.drag),t))return P(s.onZoomRejected,[{chart:i,event:t}]);Js(i,t,s)!==!1&&(e.dragStart=t,ne(i,i.canvas,"mousemove",zc),ne(i,window.document,"keydown",Ic))}function to(i,t,e,n){const s=bt(t,"x",i),o=bt(t,"y",i);let{top:r,left:a,right:l,bottom:c,width:h,height:d}=i.chartArea;const f=st(e,i),u=st(n,i);s&&(a=Math.min(f.x,u.x),l=Math.max(f.x,u.x)),o&&(r=Math.min(f.y,u.y),c=Math.max(f.y,u.y));const g=l-a,p=c-r;return{left:a,top:r,right:l,bottom:c,width:g,height:p,zoomX:s&&g?1+(h-g)/h:1,zoomY:o&&p?1+(d-p)/d:1}}function Fc(i,t){const e=H(i);if(!e.dragStart)return;Y(i,"mousemove");const{mode:n,onZoomComplete:s,drag:{threshold:o=0}}=e.options.zoom,r=to(i,n,e.dragStart,t),a=bt(n,"x",i)?r.width:0,l=bt(n,"y",i)?r.height:0,c=Math.sqrt(a*a+l*l);if(e.dragStart=e.dragEnd=null,c<=o){e.dragging=!1,i.update("none");return}Gs(i,{x:r.left,y:r.top},{x:r.right,y:r.bottom},"zoom"),setTimeout(()=>e.dragging=!1,500),P(s,[{chart:i}])}function Rc(i,t,e){if(Ci(le(e.wheel),t)){P(e.onZoomRejected,[{chart:i,event:t}]);return}if(Js(i,t,e)!==!1&&(t.cancelable&&t.preventDefault(),t.deltaY!==void 0))return!0}function Bc(i,t){const{handlers:{onZoomComplete:e},options:{zoom:n}}=H(i);if(!Rc(i,t,n))return;const s=t.target.getBoundingClientRect(),o=1+(t.deltaY>=0?-n.wheel.speed:n.wheel.speed),r={x:o,y:o,focalPoint:{x:t.clientX-s.left,y:t.clientY-s.top}};Di(i,r),e&&e()}function Hc(i,t,e,n){e&&(H(i).handlers[t]=pc(()=>P(e,[{chart:i}]),n))}function Wc(i,t){const e=i.canvas,{wheel:n,drag:s,onZoomComplete:o}=t.zoom;n.enabled?(ne(i,e,"wheel",Bc),Hc(i,"onZoomComplete",o,250)):Y(i,"wheel"),s.enabled?(ne(i,e,"mousedown",Ec),ne(i,e.ownerDocument,"mouseup",Fc)):(Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"keydown"))}function Nc(i){Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"wheel"),Y(i,"click"),Y(i,"keydown")}function jc(i,t){return function(e,n){const{pan:s,zoom:o={}}=t.options;if(!s||!s.enabled)return!1;const r=n&&n.srcEvent;return r&&!t.panning&&n.pointerType==="mouse"&&(Ci(le(s),r)||Ys(le(o.drag),r))?(P(s.onPanRejected,[{chart:i,event:n}]),!1):!0}}function Vc(i,t){const e=Math.abs(i.clientX-t.clientX),n=Math.abs(i.clientY-t.clientY),s=e/n;let o,r;return s>.3&&s<1.7?o=r=!0:e>n?o=!0:r=!0,{x:o,y:r}}function eo(i,t,e){if(t.scale){const{center:n,pointers:s}=e,o=1/t.scale*e.scale,r=e.target.getBoundingClientRect(),a=Vc(s[0],s[1]),l=t.options.zoom.mode,c={x:a.x&&bt(l,"x",i)?o:1,y:a.y&&bt(l,"y",i)?o:1,focalPoint:{x:n.x-r.left,y:n.y-r.top}};Di(i,c),t.scale=e.scale}}function $c(i,t){t.options.zoom.pinch.enabled&&(t.scale=1)}function Uc(i,t,e){t.scale&&(eo(i,t,e),t.scale=null,P(t.options.zoom.onZoomComplete,[{chart:i}]))}function io(i,t,e){const n=t.delta;n&&(t.panning=!0,Zs(i,{x:e.deltaX-n.x,y:e.deltaY-n.y},t.panScales),t.delta={x:e.deltaX,y:e.deltaY})}function Yc(i,t,e){const{enabled:n,onPanStart:s,onPanRejected:o}=t.options.pan;if(!n)return;const r=e.target.getBoundingClientRect(),a={x:e.center.x-r.left,y:e.center.y-r.top};if(P(s,[{chart:i,event:e,point:a}])===!1)return P(o,[{chart:i,event:e}]);t.panScales=Ks(t.options.pan,a,i),t.delta={x:0,y:0},clearTimeout(t.panEndTimeout),io(i,t,e)}function Kc(i,t){t.delta=null,t.panning&&(t.panEndTimeout=setTimeout(()=>t.panning=!1,500),P(t.options.pan.onPanComplete,[{chart:i}]))}const gi=new WeakMap;function Xc(i,t){const e=H(i),n=i.canvas,{pan:s,zoom:o}=t,r=new Zt.Manager(n);o&&o.pinch.enabled&&(r.add(new Zt.Pinch),r.on("pinchstart",()=>$c(i,e)),r.on("pinch",a=>eo(i,e,a)),r.on("pinchend",a=>Uc(i,e,a))),s&&s.enabled&&(r.add(new Zt.Pan({threshold:s.threshold,enable:jc(i,e)})),r.on("panstart",a=>Yc(i,e,a)),r.on("panmove",a=>io(i,e,a)),r.on("panend",()=>Kc(i,e))),gi.set(i,r)}function qc(i){const t=gi.get(i);t&&(t.remove("pinchstart"),t.remove("pinch"),t.remove("pinchend"),t.remove("panstart"),t.remove("pan"),t.remove("panend"),t.destroy(),gi.delete(i))}var Gc="2.0.1";function ke(i,t,e){const n=e.zoom.drag,{dragStart:s,dragEnd:o}=H(i);if(n.drawTime!==t||!o)return;const{left:r,top:a,width:l,height:c}=to(i,e.zoom.mode,s,o),h=i.ctx;h.save(),h.beginPath(),h.fillStyle=n.backgroundColor||"rgba(225,225,225,0.3)",h.fillRect(r,a,l,c),n.borderWidth>0&&(h.lineWidth=n.borderWidth,h.strokeStyle=n.borderColor||"rgba(225,225,225)",h.strokeRect(r,a,l,c)),h.restore()}var oh={id:"zoom",version:Gc,defaults:{pan:{enabled:!1,mode:"xy",threshold:10,modifierKey:null},zoom:{wheel:{enabled:!1,speed:.1,modifierKey:null},drag:{enabled:!1,drawTime:"beforeDatasetsDraw",modifierKey:null},pinch:{enabled:!1},mode:"xy"}},start:function(i,t,e){const n=H(i);n.options=e,Object.prototype.hasOwnProperty.call(e.zoom,"enabled")&&console.warn("The option `zoom.enabled` is no longer supported. Please use `zoom.wheel.enabled`, `zoom.drag.enabled`, or `zoom.pinch.enabled`."),(Object.prototype.hasOwnProperty.call(e.zoom,"overScaleMode")||Object.prototype.hasOwnProperty.call(e.pan,"overScaleMode"))&&console.warn("The option `overScaleMode` is deprecated. Please use `scaleMode` instead (and update `mode` as desired)."),Zt&&Xc(i,e),i.pan=(s,o,r)=>Zs(i,s,o,r),i.zoom=(s,o)=>Di(i,s,o),i.zoomRect=(s,o,r)=>Gs(i,s,o,r),i.zoomScale=(s,o,r)=>Dc(i,s,o,r),i.resetZoom=s=>Oc(i,s),i.getZoomLevel=()=>Lc(i),i.getInitialScaleBounds=()=>Qs(i),i.isZoomedOrPanned=()=>Ac(i)},beforeEvent(i){const t=H(i);if(t.panning||t.dragging)return!1},beforeUpdate:function(i,t,e){const n=H(i);n.options=e,Wc(i,e)},beforeDatasetsDraw(i,t,e){ke(i,"beforeDatasetsDraw",e)},afterDatasetsDraw(i,t,e){ke(i,"afterDatasetsDraw",e)},beforeDraw(i,t,e){ke(i,"beforeDraw",e)},afterDraw(i,t,e){ke(i,"afterDraw",e)},stop:function(i){Nc(i),Zt&&qc(i),bc(i)},panFunctions:ui,zoomFunctions:di,zoomRectFunctions:fi};export{Si as C,Se as L,Ze as P,Be as T,ih as a,St as b,In as c,oh as d,sh as e,eh as i,nh as p}; + */const le=i=>i&&i.enabled&&i.modifierKey,Ys=(i,t)=>i&&t[i+"Key"],Ci=(i,t)=>i&&!t[i+"Key"];function bt(i,t,e){return i===void 0?!0:typeof i=="string"?i.indexOf(t)!==-1:typeof i=="function"?i({chart:e}).indexOf(t)!==-1:!1}function Je(i,t){return typeof i=="function"&&(i=i({chart:t})),typeof i=="string"?{x:i.indexOf("x")!==-1,y:i.indexOf("y")!==-1}:{x:!1,y:!1}}function pc(i,t){let e;return function(){return clearTimeout(e),e=setTimeout(i,t),t}}function mc({x:i,y:t},e){const n=e.scales,s=Object.keys(n);for(let o=0;o=r.top&&t<=r.bottom&&i>=r.left&&i<=r.right)return r}return null}function Ks(i,t,e){const{mode:n="xy",scaleMode:s,overScaleMode:o}=i||{},r=mc(t,e),a=Je(n,e),l=Je(s,e);if(o){const h=Je(o,e);for(const d of["x","y"])h[d]&&(l[d]=a[d],a[d]=!1)}if(r&&l[r.axis])return[r];const c=[];return O(e.scales,function(h){a[h.axis]&&c.push(h)}),c}const hi=new WeakMap;function H(i){let t=hi.get(i);return t||(t={originalScaleLimits:{},updatedScaleLimits:{},handlers:{},panDelta:{}},hi.set(i,t)),t}function bc(i){hi.delete(i)}function Xs(i,t,e){const n=i.max-i.min,s=n*(t-1),o=i.isHorizontal()?e.x:e.y,r=Math.max(0,Math.min(1,(i.getValueForPixel(o)-i.min)/n||0)),a=1-r;return{min:s*r,max:s*a}}function Un(i,t,e,n,s){let o=e[n];if(o==="original"){const r=i.originalScaleLimits[t.id][n];o=D(r.options,r.scale)}return D(o,s)}function xc(i,t,e){const n=i.getValueForPixel(t),s=i.getValueForPixel(e);return{min:Math.min(n,s),max:Math.max(n,s)}}function Bt(i,{min:t,max:e},n,s=!1){const o=H(i.chart),{id:r,axis:a,options:l}=i,c=n&&(n[r]||n[a])||{},{minRange:h=0}=c,d=Un(o,i,c,"min",-1/0),f=Un(o,i,c,"max",1/0),u=s?Math.max(e-t,h):i.max-i.min,g=(u-e+t)/2;return t-=g,e+=g,tf&&(e=f,t=Math.max(f-u,d)),l.min=t,l.max=e,o.updatedScaleLimits[i.id]={min:t,max:e},i.parse(t)!==i.min||i.parse(e)!==i.max}function _c(i,t,e,n){const s=Xs(i,t,e),o={min:i.min+s.min,max:i.max-s.max};return Bt(i,o,n,!0)}function yc(i,t,e,n){Bt(i,xc(i,t,e),n,!0)}const Yn=i=>i===0||isNaN(i)?0:i<0?Math.min(Math.round(i),-1):Math.max(Math.round(i),1);function vc(i){const e=i.getLabels().length-1;i.min>0&&(i.min-=1),i.maxl&&(o=Math.max(0,o-c),r=a===1?o:o+a,h=o===0),Bt(i,{min:o,max:r},e)||h}const Sc={second:500,minute:30*1e3,hour:30*60*1e3,day:12*60*60*1e3,week:3.5*24*60*60*1e3,month:15*24*60*60*1e3,quarter:60*24*60*60*1e3,year:182*24*60*60*1e3};function qs(i,t,e,n=!1){const{min:s,max:o,options:r}=i,a=r.time&&r.time.round,l=Sc[a]||0,c=i.getValueForPixel(i.getPixelForValue(s+l)-t),h=i.getValueForPixel(i.getPixelForValue(o+l)-t),{min:d=-1/0,max:f=1/0}=n&&e&&e[i.axis]||{};return isNaN(c)||isNaN(h)||cf?!0:Bt(i,{min:c,max:h},e,n)}function Kn(i,t,e){return qs(i,t,e,!0)}const di={category:wc,default:_c},fi={default:yc},ui={category:kc,default:qs,logarithmic:Kn,timeseries:Kn};function Pc(i,t,e){const{id:n,options:{min:s,max:o}}=i;if(!t[n]||!e[n])return!0;const r=e[n];return r.min!==s||r.max!==o}function Xn(i,t){O(i,(e,n)=>{t[n]||delete i[n]})}function Ht(i,t){const{scales:e}=i,{originalScaleLimits:n,updatedScaleLimits:s}=t;return O(e,function(o){Pc(o,n,s)&&(n[o.id]={min:{scale:o.min,options:o.options.min},max:{scale:o.max,options:o.options.max}})}),Xn(n,e),Xn(s,e),n}function qn(i,t,e,n){const s=di[i.type]||di.default;P(s,[i,t,e,n])}function Gn(i,t,e,n,s){const o=fi[i.type]||fi.default;P(o,[i,t,e,n,s])}function Cc(i){const t=i.chartArea;return{x:(t.left+t.right)/2,y:(t.top+t.bottom)/2}}function Di(i,t,e="none"){const{x:n=1,y:s=1,focalPoint:o=Cc(i)}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{limits:a,zoom:l}}=r;Ht(i,r);const c=n!==1,h=s!==1,d=Ks(l,o,i);O(d||i.scales,function(f){f.isHorizontal()&&c?qn(f,n,o,a):!f.isHorizontal()&&h&&qn(f,s,o,a)}),i.update(e),P(l.onZoom,[{chart:i}])}function Gs(i,t,e,n="none"){const s=H(i),{options:{limits:o,zoom:r}}=s,{mode:a="xy"}=r;Ht(i,s);const l=bt(a,"x",i),c=bt(a,"y",i);O(i.scales,function(h){h.isHorizontal()&&l?Gn(h,t.x,e.x,o):!h.isHorizontal()&&c&&Gn(h,t.y,e.y,o)}),i.update(n),P(r.onZoom,[{chart:i}])}function Dc(i,t,e,n="none"){Ht(i,H(i));const s=i.scales[t];Bt(s,e,void 0,!0),i.update(n)}function Oc(i,t="default"){const e=H(i),n=Ht(i,e);O(i.scales,function(s){const o=s.options;n[s.id]?(o.min=n[s.id].min.options,o.max=n[s.id].max.options):(delete o.min,delete o.max)}),i.update(t),P(e.options.zoom.onZoomComplete,[{chart:i}])}function Tc(i,t){const e=i.originalScaleLimits[t];if(!e)return;const{min:n,max:s}=e;return D(s.options,s.scale)-D(n.options,n.scale)}function Lc(i){const t=H(i);let e=1,n=1;return O(i.scales,function(s){const o=Tc(t,s.id);if(o){const r=Math.round(o/(s.max-s.min)*100)/100;e=Math.min(e,r),n=Math.max(n,r)}}),e<1?e:n}function Zn(i,t,e,n){const{panDelta:s}=n,o=s[i.id]||0;pt(o)===pt(t)&&(t+=o);const r=ui[i.type]||ui.default;P(r,[i,t,e])?s[i.id]=0:s[i.id]=t}function Zs(i,t,e,n="none"){const{x:s=0,y:o=0}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{pan:a,limits:l}}=r,{onPan:c}=a||{};Ht(i,r);const h=s!==0,d=o!==0;O(e||i.scales,function(f){f.isHorizontal()&&h?Zn(f,s,l,r):!f.isHorizontal()&&d&&Zn(f,o,l,r)}),i.update(n),P(c,[{chart:i}])}function Qs(i){const t=H(i);Ht(i,t);const e={};for(const n of Object.keys(i.scales)){const{min:s,max:o}=t.originalScaleLimits[n]||{min:{},max:{}};e[n]={min:s.scale,max:o.scale}}return e}function Ac(i){const t=Qs(i);for(const e of Object.keys(i.scales)){const{min:n,max:s}=t[e];if(n!==void 0&&i.scales[e].min!==n||s!==void 0&&i.scales[e].max!==s)return!0}return!1}function Y(i,t){const{handlers:e}=H(i),n=e[t];n&&n.target&&(n.target.removeEventListener(t,n),delete e[t])}function ne(i,t,e,n){const{handlers:s,options:o}=H(i),r=s[e];r&&r.target===t||(Y(i,e),s[e]=a=>n(i,a,o),s[e].target=t,t.addEventListener(e,s[e]))}function zc(i,t){const e=H(i);e.dragStart&&(e.dragging=!0,e.dragEnd=t,i.update("none"))}function Ic(i,t){const e=H(i);!e.dragStart||t.key!=="Escape"||(Y(i,"keydown"),e.dragging=!1,e.dragStart=e.dragEnd=null,i.update("none"))}function Js(i,t,e){const{onZoomStart:n,onZoomRejected:s}=e;if(n){const o=st(t,i);if(P(n,[{chart:i,event:t,point:o}])===!1)return P(s,[{chart:i,event:t}]),!1}}function Ec(i,t){const e=H(i),{pan:n,zoom:s={}}=e.options;if(t.button!==0||Ys(le(n),t)||Ci(le(s.drag),t))return P(s.onZoomRejected,[{chart:i,event:t}]);Js(i,t,s)!==!1&&(e.dragStart=t,ne(i,i.canvas,"mousemove",zc),ne(i,window.document,"keydown",Ic))}function to(i,t,e,n){const s=bt(t,"x",i),o=bt(t,"y",i);let{top:r,left:a,right:l,bottom:c,width:h,height:d}=i.chartArea;const f=st(e,i),u=st(n,i);s&&(a=Math.min(f.x,u.x),l=Math.max(f.x,u.x)),o&&(r=Math.min(f.y,u.y),c=Math.max(f.y,u.y));const g=l-a,p=c-r;return{left:a,top:r,right:l,bottom:c,width:g,height:p,zoomX:s&&g?1+(h-g)/h:1,zoomY:o&&p?1+(d-p)/d:1}}function Fc(i,t){const e=H(i);if(!e.dragStart)return;Y(i,"mousemove");const{mode:n,onZoomComplete:s,drag:{threshold:o=0}}=e.options.zoom,r=to(i,n,e.dragStart,t),a=bt(n,"x",i)?r.width:0,l=bt(n,"y",i)?r.height:0,c=Math.sqrt(a*a+l*l);if(e.dragStart=e.dragEnd=null,c<=o){e.dragging=!1,i.update("none");return}Gs(i,{x:r.left,y:r.top},{x:r.right,y:r.bottom},"zoom"),setTimeout(()=>e.dragging=!1,500),P(s,[{chart:i}])}function Rc(i,t,e){if(Ci(le(e.wheel),t)){P(e.onZoomRejected,[{chart:i,event:t}]);return}if(Js(i,t,e)!==!1&&(t.cancelable&&t.preventDefault(),t.deltaY!==void 0))return!0}function Bc(i,t){const{handlers:{onZoomComplete:e},options:{zoom:n}}=H(i);if(!Rc(i,t,n))return;const s=t.target.getBoundingClientRect(),o=1+(t.deltaY>=0?-n.wheel.speed:n.wheel.speed),r={x:o,y:o,focalPoint:{x:t.clientX-s.left,y:t.clientY-s.top}};Di(i,r),e&&e()}function Hc(i,t,e,n){e&&(H(i).handlers[t]=pc(()=>P(e,[{chart:i}]),n))}function Wc(i,t){const e=i.canvas,{wheel:n,drag:s,onZoomComplete:o}=t.zoom;n.enabled?(ne(i,e,"wheel",Bc),Hc(i,"onZoomComplete",o,250)):Y(i,"wheel"),s.enabled?(ne(i,e,"mousedown",Ec),ne(i,e.ownerDocument,"mouseup",Fc)):(Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"keydown"))}function Nc(i){Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"wheel"),Y(i,"click"),Y(i,"keydown")}function jc(i,t){return function(e,n){const{pan:s,zoom:o={}}=t.options;if(!s||!s.enabled)return!1;const r=n&&n.srcEvent;return r&&!t.panning&&n.pointerType==="mouse"&&(Ci(le(s),r)||Ys(le(o.drag),r))?(P(s.onPanRejected,[{chart:i,event:n}]),!1):!0}}function Vc(i,t){const e=Math.abs(i.clientX-t.clientX),n=Math.abs(i.clientY-t.clientY),s=e/n;let o,r;return s>.3&&s<1.7?o=r=!0:e>n?o=!0:r=!0,{x:o,y:r}}function eo(i,t,e){if(t.scale){const{center:n,pointers:s}=e,o=1/t.scale*e.scale,r=e.target.getBoundingClientRect(),a=Vc(s[0],s[1]),l=t.options.zoom.mode,c={x:a.x&&bt(l,"x",i)?o:1,y:a.y&&bt(l,"y",i)?o:1,focalPoint:{x:n.x-r.left,y:n.y-r.top}};Di(i,c),t.scale=e.scale}}function $c(i,t){t.options.zoom.pinch.enabled&&(t.scale=1)}function Uc(i,t,e){t.scale&&(eo(i,t,e),t.scale=null,P(t.options.zoom.onZoomComplete,[{chart:i}]))}function io(i,t,e){const n=t.delta;n&&(t.panning=!0,Zs(i,{x:e.deltaX-n.x,y:e.deltaY-n.y},t.panScales),t.delta={x:e.deltaX,y:e.deltaY})}function Yc(i,t,e){const{enabled:n,onPanStart:s,onPanRejected:o}=t.options.pan;if(!n)return;const r=e.target.getBoundingClientRect(),a={x:e.center.x-r.left,y:e.center.y-r.top};if(P(s,[{chart:i,event:e,point:a}])===!1)return P(o,[{chart:i,event:e}]);t.panScales=Ks(t.options.pan,a,i),t.delta={x:0,y:0},clearTimeout(t.panEndTimeout),io(i,t,e)}function Kc(i,t){t.delta=null,t.panning&&(t.panEndTimeout=setTimeout(()=>t.panning=!1,500),P(t.options.pan.onPanComplete,[{chart:i}]))}const gi=new WeakMap;function Xc(i,t){const e=H(i),n=i.canvas,{pan:s,zoom:o}=t,r=new Zt.Manager(n);o&&o.pinch.enabled&&(r.add(new Zt.Pinch),r.on("pinchstart",()=>$c(i,e)),r.on("pinch",a=>eo(i,e,a)),r.on("pinchend",a=>Uc(i,e,a))),s&&s.enabled&&(r.add(new Zt.Pan({threshold:s.threshold,enable:jc(i,e)})),r.on("panstart",a=>Yc(i,e,a)),r.on("panmove",a=>io(i,e,a)),r.on("panend",()=>Kc(i,e))),gi.set(i,r)}function qc(i){const t=gi.get(i);t&&(t.remove("pinchstart"),t.remove("pinch"),t.remove("pinchend"),t.remove("panstart"),t.remove("pan"),t.remove("panend"),t.destroy(),gi.delete(i))}var Gc="2.0.1";function ke(i,t,e){const n=e.zoom.drag,{dragStart:s,dragEnd:o}=H(i);if(n.drawTime!==t||!o)return;const{left:r,top:a,width:l,height:c}=to(i,e.zoom.mode,s,o),h=i.ctx;h.save(),h.beginPath(),h.fillStyle=n.backgroundColor||"rgba(225,225,225,0.3)",h.fillRect(r,a,l,c),n.borderWidth>0&&(h.lineWidth=n.borderWidth,h.strokeStyle=n.borderColor||"rgba(225,225,225)",h.strokeRect(r,a,l,c)),h.restore()}var rh={id:"zoom",version:Gc,defaults:{pan:{enabled:!1,mode:"xy",threshold:10,modifierKey:null},zoom:{wheel:{enabled:!1,speed:.1,modifierKey:null},drag:{enabled:!1,drawTime:"beforeDatasetsDraw",modifierKey:null},pinch:{enabled:!1},mode:"xy"}},start:function(i,t,e){const n=H(i);n.options=e,Object.prototype.hasOwnProperty.call(e.zoom,"enabled")&&console.warn("The option `zoom.enabled` is no longer supported. Please use `zoom.wheel.enabled`, `zoom.drag.enabled`, or `zoom.pinch.enabled`."),(Object.prototype.hasOwnProperty.call(e.zoom,"overScaleMode")||Object.prototype.hasOwnProperty.call(e.pan,"overScaleMode"))&&console.warn("The option `overScaleMode` is deprecated. Please use `scaleMode` instead (and update `mode` as desired)."),Zt&&Xc(i,e),i.pan=(s,o,r)=>Zs(i,s,o,r),i.zoom=(s,o)=>Di(i,s,o),i.zoomRect=(s,o,r)=>Gs(i,s,o,r),i.zoomScale=(s,o,r)=>Dc(i,s,o,r),i.resetZoom=s=>Oc(i,s),i.getZoomLevel=()=>Lc(i),i.getInitialScaleBounds=()=>Qs(i),i.isZoomedOrPanned=()=>Ac(i)},beforeEvent(i){const t=H(i);if(t.panning||t.dragging)return!1},beforeUpdate:function(i,t,e){const n=H(i);n.options=e,Wc(i,e)},beforeDatasetsDraw(i,t,e){ke(i,"beforeDatasetsDraw",e)},afterDatasetsDraw(i,t,e){ke(i,"afterDatasetsDraw",e)},beforeDraw(i,t,e){ke(i,"beforeDraw",e)},afterDraw(i,t,e){ke(i,"afterDraw",e)},stop:function(i){Nc(i),Zt&&qc(i),bc(i)},panFunctions:ui,zoomFunctions:di,zoomRectFunctions:fi};export{Si as C,Se as L,Ze as P,Be as T,ih as a,St as b,In as c,rh as d,oh as e,sh as g,eh as i,nh as p}; diff --git a/web/settings/index.html b/web/settings/index.html index 674a30fa34..19940188cb 100644 --- a/web/settings/index.html +++ b/web/settings/index.html @@ -7,7 +7,7 @@ openWB - + From cd9c0b8e920683a6c18557a78efc84175e7c62ea Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Tue, 22 Aug 2023 15:31:09 +0200 Subject: [PATCH 081/121] Update version 2.1.1-Beta.1 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index a15ffe25bf..13507d06d8 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.1-Alpha.1 +2.1.1-Beta.1 From da5eb0875818953dbaed87a561ae0a370082b775 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 11:34:37 +0200 Subject: [PATCH 082/121] BatterX: fix entity of external inverter --- packages/modules/devices/batterx/external_inverter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/batterx/external_inverter.py b/packages/modules/devices/batterx/external_inverter.py index 95fa69a562..8cc7c664a5 100644 --- a/packages/modules/devices/batterx/external_inverter.py +++ b/packages/modules/devices/batterx/external_inverter.py @@ -19,7 +19,7 @@ def __init__(self, device_id: int, component_config: Union[Dict, BatterXExternal self.component_info = ComponentInfo.from_component_config(self.component_config) def get_power(self, resp: Dict) -> float: - return resp["2913"]["0"] * -1 + return resp["2913"]["3"] * -1 def update(self, resp: Dict) -> None: power = self.get_power(resp) From 55d6039ab1d61f89645598393d6066a1c8d4400a Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Thu, 24 Aug 2023 12:28:43 +0200 Subject: [PATCH 083/121] Update version 2.1.1-Alpha.2 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index 13507d06d8..a0ec6f120e 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.1-Beta.1 +2.1.1-Alpha.2 From a435c846b36fc299fd16a574086a5d4627722c59 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 15:50:45 +0200 Subject: [PATCH 084/121] Varta: invalid register --- packages/modules/devices/varta/counter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/modules/devices/varta/counter.py b/packages/modules/devices/varta/counter.py index a5de2503a5..73e7efe0d2 100644 --- a/packages/modules/devices/varta/counter.py +++ b/packages/modules/devices/varta/counter.py @@ -19,14 +19,12 @@ def __init__(self, device_id: int, component_config: VartaCounterSetup) -> None: def update(self, client: ModbusTcpClient_): power = client.read_holding_registers(1078, ModbusDataType.INT_16, unit=1) * -1 - frequency = client.read_holding_registers(1082, ModbusDataType.UINT_16, unit=1) / 100 imported, exported = self.sim_counter.sim_count(power) counter_state = CounterState( imported=imported, exported=exported, power=power, - frequency=frequency ) self.store.set(counter_state) From ae40c163c04abfbccde2dcf7a36c7418e5f2bee7 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 25 Aug 2023 09:51:52 +0200 Subject: [PATCH 085/121] setdata powers and frequency --- packages/helpermodules/setdata.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 6f67a8e88d..7ea19d925e 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -558,14 +558,14 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage): def process_chargepoint_get_topics(self, msg): if ("/get/voltages" in msg.topic): - self._validate_value( - msg, float, [(0, 500)], collection=list) - elif ("/get/currents" in msg.topic): - self._validate_value( - msg, float, collection=list) + self._validate_value(msg, float, [(0, 500)], collection=list) + elif ("/get/currents" in msg.topic or + "/get/powers" in msg.topic): + self._validate_value(msg, float, collection=list) elif ("/get/power_factors" in msg.topic): - self._validate_value( - msg, float, [(-1, 1)], collection=list) + self._validate_value(msg, float, [(-1, 1)], collection=list) + elif ("/get/frequency" in msg.topic): + self._validate_value(msg, float, [(40, 60)]) elif ("/get/daily_imported" in msg.topic or "/get/daily_exported" in msg.topic or "/get/power" in msg.topic or From 5c565ad50167eb5596d9472ee2417598bdea4f31 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 25 Aug 2023 12:57:34 +0200 Subject: [PATCH 086/121] fix BatterX --- .../modules/devices/batterx/batterx_test.py | 5 +- packages/modules/devices/batterx/device.py | 94 ++++++++----------- 2 files changed, 42 insertions(+), 57 deletions(-) diff --git a/packages/modules/devices/batterx/batterx_test.py b/packages/modules/devices/batterx/batterx_test.py index 026c258b73..e148bb22c6 100644 --- a/packages/modules/devices/batterx/batterx_test.py +++ b/packages/modules/devices/batterx/batterx_test.py @@ -4,9 +4,10 @@ from modules.common.component_state import BatState, CounterState, InverterState -from modules.devices.batterx import bat, counter, device, inverter +from modules.devices.batterx import bat, counter, inverter from modules.devices.batterx.config import (BatterX, BatterXBatSetup, BatterXConfiguration, BatterXCounterSetup, BatterXInverterSetup) +from modules.devices.batterx.device import create_device def test_batterx(monkeypatch, requests_mock: requests_mock.mock): @@ -19,7 +20,7 @@ def test_batterx(monkeypatch, requests_mock: requests_mock.mock): monkeypatch.setattr(inverter, 'get_inverter_value_store', Mock(return_value=mock_inverter_value_store)) requests_mock.get("http://1.1.1.1/api.php?get=currentstate", json=SAMPLE) - dev = device.Device(BatterX(configuration=BatterXConfiguration(ip_address="1.1.1.1"))) + dev = create_device(BatterX(configuration=BatterXConfiguration(ip_address="1.1.1.1"))) dev.add_component(BatterXBatSetup(id=2)) dev.add_component(BatterXCounterSetup(id=0)) dev.add_component(BatterXInverterSetup(id=1)) diff --git a/packages/modules/devices/batterx/device.py b/packages/modules/devices/batterx/device.py index 001cbb1905..2969d884b9 100644 --- a/packages/modules/devices/batterx/device.py +++ b/packages/modules/devices/batterx/device.py @@ -1,72 +1,56 @@ #!/usr/bin/env python3 import logging -from typing import Dict, Optional, Union, List +from typing import Iterable, Optional, Union, List -from dataclass_utils import dataclass_from_dict from helpermodules.cli import run_using_positional_cli_args -from modules.common.abstract_device import AbstractDevice, DeviceDescriptor +from modules.common.abstract_device import DeviceDescriptor from modules.common.component_context import MultiComponentUpdateContext +from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater from modules.common.store import get_inverter_value_store from modules.devices.batterx import bat, external_inverter from modules.devices.batterx import counter from modules.devices.batterx import inverter -from modules.devices.batterx.config import BatterX, BatterXBatSetup, BatterXCounterSetup, BatterXInverterSetup +from modules.devices.batterx.config import (BatterX, BatterXBatSetup, BatterXCounterSetup, + BatterXExternalInverterSetup, BatterXInverterSetup) from modules.common import req log = logging.getLogger(__name__) batterx_component_classes = Union[bat.BatterXBat, counter.BatterXCounter, - inverter.BatterXInverter] - - -class Device(AbstractDevice): - COMPONENT_TYPE_TO_CLASS = { - "bat": bat.BatterXBat, - "counter": counter.BatterXCounter, - "inverter": inverter.BatterXInverter, - } - - def __init__(self, device_config: Union[Dict, BatterX]) -> None: - self.components = {} # type: Dict[str, batterx_component_classes] - try: - self.device_config = dataclass_from_dict(BatterX, device_config) - except Exception: - log.exception("Fehler im Modul "+self.device_config.name) - - def add_component(self, component_config: Union[Dict, - BatterXBatSetup, - BatterXCounterSetup, - BatterXInverterSetup]) -> None: - if isinstance(component_config, Dict): - component_type = component_config["type"] - else: - component_type = component_config.type - component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[ - component_type].component_descriptor.configuration_factory, component_config) - if component_type in self.COMPONENT_TYPE_TO_CLASS: - self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type]( - self.device_config.id, component_config)) - else: - raise Exception( - "illegal component type " + component_type + ". Allowed values: " + - ','.join(self.COMPONENT_TYPE_TO_CLASS.keys()) - ) - - def update(self) -> None: - log.debug("Start device reading " + str(self.components)) - if self.components: - with MultiComponentUpdateContext(self.components): - resp_json = req.get_http_session().get( - 'http://' + self.device_config.configuration.ip_address + '/api.php?get=currentstate', + inverter.BatterXInverter, external_inverter.BatterXExternalInverter] + + +def create_device(device_config: BatterX): + def create_bat_component(component_config: BatterXBatSetup): + return bat.BatterXBat(device_config.id, component_config) + + def create_counter_component(component_config: BatterXCounterSetup): + return counter.BatterXCounter(device_config.id, component_config) + + def create_inverter_component(component_config: BatterXInverterSetup): + return inverter.BatterXInverter(device_config.id, component_config) + + def create_external_inverter_component(component_config: BatterXExternalInverterSetup): + return external_inverter.BatterXExternalInverter(device_config.id, component_config) + + def update_components(components: Iterable[batterx_component_classes]): + resp_json = req.get_http_session().get( + 'http://' + device_config.configuration.ip_address + '/api.php?get=currentstate', timeout=5).json() - for component in self.components: - self.components[component].update(resp_json) - else: - log.warning( - self.device_config.name + - ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden." - ) + for component in components: + component.update(resp_json) + + return ConfigurableDevice( + device_config=device_config, + component_factory=ComponentFactoryByType( + bat=create_bat_component, + counter=create_counter_component, + inverter=create_inverter_component, + external_inverter=create_external_inverter_component, + ), + component_updater=MultiComponentUpdater(update_components) + ) COMPONENT_TYPE_TO_MODULE = { @@ -87,7 +71,7 @@ def read_legacy( device_config = BatterX() device_config.configuration.ip_address = ip_address - dev = Device(device_config) + dev = create_device(device_config) dev = _add_component(dev, component_type, num) if evu_counter == "bezug_batterx": dev = _add_component(dev, "counter", 0) @@ -115,7 +99,7 @@ def read_legacy( get_inverter_value_store(num).set(state) -def _add_component(dev: Device, component_type: str, num: Optional[int]) -> Device: +def _add_component(dev: ConfigurableDevice, component_type: str, num: Optional[int]) -> ConfigurableDevice: if component_type in COMPONENT_TYPE_TO_MODULE: component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory() else: From 4e984a5d68a2dc502f8bb0a7e2d7850d3a4a7199 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 28 Aug 2023 11:41:28 +0200 Subject: [PATCH 087/121] default value datastore version --- packages/helpermodules/update_config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 0870286d10..e98b6956b9 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -414,6 +414,7 @@ class UpdateConfig: ("openWB/optional/rfid/active", False), ("openWB/system/backup_cloud/config", {"type": None, "configuration": {}}), ("openWB/system/dataprotection_acknowledged", False), + ("openWB/system/datastore", DATASTORE_VERSION), ("openWB/system/usage_terms_acknowledged", False), ("openWB/system/debug_level", 30), ("openWB/system/device/module_update_completed", True), From 47d6b93e6da0c06d2d2fb36ad62a401ea2c1c6b5 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 29 Aug 2023 09:26:02 +0200 Subject: [PATCH 088/121] fix datastore version --- 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 e98b6956b9..54455e9bce 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -414,7 +414,7 @@ class UpdateConfig: ("openWB/optional/rfid/active", False), ("openWB/system/backup_cloud/config", {"type": None, "configuration": {}}), ("openWB/system/dataprotection_acknowledged", False), - ("openWB/system/datastore", DATASTORE_VERSION), + ("openWB/system/datastore_version", DATASTORE_VERSION), ("openWB/system/usage_terms_acknowledged", False), ("openWB/system/debug_level", 30), ("openWB/system/device/module_update_completed", True), From 43ae3e618c8c195fb4243263b91a4b1224755258 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 23 Aug 2023 11:59:19 +0200 Subject: [PATCH 089/121] draft --- packages/control/counter_all.py | 36 +++++-------------- .../control/counter_home_consumption_test.py | 2 +- .../measurement_logging/process_log.py | 9 +++-- .../update_daily_yields.py | 2 +- .../measurement_logging/write_log.py | 6 ++-- packages/helpermodules/setdata.py | 3 ++ packages/helpermodules/subdata.py | 4 +++ packages/helpermodules/update_config.py | 23 +++++++++++- 8 files changed, 50 insertions(+), 35 deletions(-) diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py index 5fa8c7c436..a998b239d2 100644 --- a/packages/control/counter_all.py +++ b/packages/control/counter_all.py @@ -13,6 +13,7 @@ from helpermodules.pub import Pub from modules.common.component_type import ComponentType, component_type_to_readable_text from modules.common.fault_state import FaultStateLevel +from modules.common.simcount import SimCounter log = logging.getLogger(__name__) @@ -32,6 +33,7 @@ class Set: home_consumption: float = 0 invalid_home_consumption: int = 0 daily_yield_home_consumption: float = 0 + imported_home_consumption: float = 0 disengageable_smarthome_power: float = 0 @@ -65,6 +67,8 @@ def __init__(self): self.connected_counters = [] self.connected_chargepoints = [] self.childless = [] + self.sim_counter = SimCounter("", "", prefix="bezug") + self.sim_counter.topic = "openWB/set/counter/set/" def get_evu_counter(self) -> Counter: return data.data.counter_data[f"counter{self.get_id_evu_counter()}"] @@ -120,6 +124,9 @@ def set_home_consumption(self) -> None: self.data.set.invalid_home_consumption) self.data.set.home_consumption = home_consumption Pub().pub("openWB/set/counter/set/home_consumption", self.data.set.home_consumption) + imported, _ = self.sim_counter.sim_count(self.data.set.home_consumption) + Pub().pub("openWB/set/counter/set/imported_home_consumption", imported) + self.data.set.imported_home_consumption = imported except Exception: log.exception("Fehler in der allgemeinen Zähler-Klasse") @@ -154,35 +161,8 @@ def _get_elements_for_home_consumption_calculation(self): elements_to_sum_up.extend(self._add_hybrid_bat(element['id'])) return elements_to_sum_up - def calc_daily_yield_home_consumption(self) -> None: - """ daily_yield_home_consumption = (evu_imported + pv - cp_imported + cp_exported + bat_exported - - bat_imported - evu_exported) - """ - def sum_up_imported_exported(component): - self.daily_yield_home_consumption -= component.data.get.daily_imported - self.daily_yield_home_consumption += component.data.get.daily_exported - self.daily_yield_home_consumption = 0 - try: - self.daily_yield_home_consumption += data.data.counter_data[self.get_evu_counter_str() - ].data.get.daily_imported - self.daily_yield_home_consumption -= data.data.counter_data[self.get_evu_counter_str() - ].data.get.daily_exported - elements_to_sum_up = self._get_elements_for_home_consumption_calculation() - for element in elements_to_sum_up: - if element["type"] == ComponentType.CHARGEPOINT.value: - sum_up_imported_exported(data.data.cp_data[f"cp{element['id']}"]) - elif element["type"] == ComponentType.BAT.value: - sum_up_imported_exported(data.data.bat_data[f"bat{element['id']}"]) - elif element["type"] == ComponentType.COUNTER.value: - sum_up_imported_exported(data.data.counter_data[f"counter{element['id']}"]) - elif element["type"] == ComponentType.INVERTER.value: - self.daily_yield_home_consumption += data.data.pv_data[f"pv{element['id']}"].data.get.daily_exported - Pub().pub("openWB/set/counter/set/daily_yield_home_consumption", self.daily_yield_home_consumption) - self.data.set.daily_yield_home_consumption = self.daily_yield_home_consumption - except Exception: - log.exception("Fehler in der allgemeinen Zähler-Klasse") - # Hierarchie analysieren + def get_all_elements_without_children(self, id: int) -> List[Dict]: self.childless.clear() self.get_all_elements_without_children_recursive(self.get_entry_of_element(id)) diff --git a/packages/control/counter_home_consumption_test.py b/packages/control/counter_home_consumption_test.py index 7df674a32e..95f6664f3c 100644 --- a/packages/control/counter_home_consumption_test.py +++ b/packages/control/counter_home_consumption_test.py @@ -61,7 +61,7 @@ def testcalc_daily_yield_home_consumption(counter_all: Callable[[], CounterAll], c = counter_all() # execution - c.calc_daily_yield_home_consumption() + c.calc_home_consumption_imported() # evaluation assert c.data.set.daily_yield_home_consumption == 14000 diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index b4ed549789..fcaeeb240e 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -31,14 +31,19 @@ def string_to_int(value: str, default: int = 0) -> int: def get_totals(entries: List) -> Dict: - totals: Dict[str, Dict] = {"cp": {}, "counter": {}, "pv": {}, "bat": {}, "sh": {}} + totals: Dict[str, Dict] = {"cp": {}, "counter": {}, "pv": {}, "bat": {}, "sh": {}, "hc": {}} prev_entry: Dict = {} for group in totals.keys(): for entry in entries: for module in entry[group]: try: if not prev_entry or module not in totals[group]: - totals[group][module] = {"exported": 0} if group == "pv" else {"imported": 0, "exported": 0} + if group == "hc": + totals[group][module] = {"imported": 0} + elif group == "pv": + totals[group][module] = {"exported": 0} + else: + totals[group][module] = {"imported": 0, "exported": 0} else: for key, value in entry[group][module].items(): if key != "soc" and key != "grid" and "temp" not in key: diff --git a/packages/helpermodules/measurement_logging/update_daily_yields.py b/packages/helpermodules/measurement_logging/update_daily_yields.py index 91bb73af54..895e60a2e3 100644 --- a/packages/helpermodules/measurement_logging/update_daily_yields.py +++ b/packages/helpermodules/measurement_logging/update_daily_yields.py @@ -18,7 +18,7 @@ def update_daily_yields(entries): """ totals = get_totals(entries) [update_module_yields(type, totals) for type in ("bat", "counter", "cp", "pv")] - data.data.counter_all_data.calc_daily_yield_home_consumption() + data.data.counter_all_data.data.set.daily_yield_home_consumption = totals["hc"]["imported"] def update_module_yields(module: str, totals: Dict) -> None: diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index b8255452c2..9042ece40b 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -78,7 +78,8 @@ # "temp3": int in °C # }, # ... (dynamisch, je nach Anzahl konfigurierter Geräte) -# } +# }, +# "hc": Wh # Hausverbrauch # }], # "names": "names": {"sh1": "", "cp1": "", "counter2": "", "pv3": ""} # } @@ -162,7 +163,8 @@ def save_log(folder): "counter": counter_dict, "pv": pv_dict, "bat": bat_dict, - "sh": sh_dict + "sh": sh_dict, + "hc": data.data.counter_all_data.data.set.imported_home_consumption } # json-Objekt in Datei einfügen diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 7ea19d925e..c019f52f1e 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -823,11 +823,14 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage): elif "openWB/set/counter/set/invalid_home_consumption" in msg.topic: self._validate_value(msg, int, [(0, 3)]) elif ("openWB/set/counter/set/home_consumption" in msg.topic or + "openWB/set/counter/set/imported_home_consumption" in msg.topic or "openWB/set/counter/set/daily_yield_home_consumption" in msg.topic or "openWB/set/counter/set/disengageable_smarthome_power" in msg.topic): self._validate_value(msg, float, [(0, float("inf"))]) elif "openWB/set/counter/get/hierarchy" in msg.topic: self._validate_value(msg, None) + elif "openWB/set/counter/set/simulation" in msg.topic: + self._validate_value(msg, "json") elif "/set/consumption_left" in msg.topic: self._validate_value(msg, float) elif "/config/selected" in msg.topic: diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index 28f01bb882..f6275f7f99 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -638,6 +638,10 @@ def process_counter_topic(self, var: Dict[str, counter.Counter], msg: mqtt.MQTTM self.set_json_payload_class(self.counter_all_data.data.config, msg) elif re.search("/counter/get", msg.topic) is not None: self.set_json_payload_class(self.counter_all_data.data.get, msg) + elif re.search("/counter/set/simulation", msg.topic) is not None: + self.counter_all_data.sim_counter.data = dataclass_from_dict( + SimCounterState, + decode_payload(msg.payload)) elif re.search("/counter/set", msg.topic) is not None: self.set_json_payload_class(self.counter_all_data.data.set, msg) except Exception: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 54455e9bce..a79f5b88f3 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -25,7 +25,7 @@ class UpdateConfig: - DATASTORE_VERSION = 18 + DATASTORE_VERSION = 19 valid_topic = [ "^openWB/bat/config/configured$", "^openWB/bat/set/charging_power_left$", @@ -98,9 +98,11 @@ class UpdateConfig: "^openWB/counter/config/reserve_for_not_charging$", "^openWB/counter/get/hierarchy$", "^openWB/counter/set/disengageable_smarthome_power$", + "^openWB/counter/set/imported_home_consumption$", "^openWB/counter/set/invalid_home_consumption$", "^openWB/counter/set/home_consumption$", "^openWB/counter/set/daily_yield_home_consumption$", + "^openWB/counter/set/simulation$", "^openWB/counter/[0-9]+/get/voltages$", "^openWB/counter/[0-9]+/get/power$", "^openWB/counter/[0-9]+/get/currents$", @@ -816,3 +818,22 @@ def upgrade_datastore_17(self) -> None: Pub().pub(topic_device.replace("openWB/", "openWB/set/"), payload_device) Pub().pub(topic_component.replace("openWB/", "openWB/set/"), payload_inverter) Pub().pub("openWB/system/datastore_version", 18) + + def upgrade_datastore_18(self) -> None: + files = glob.glob("/var/www/html/openWB/data/daily_log/*") + files.extend(glob.glob("/var/www/html/openWB/data/monthly_log/*")) + for file in files: + with open(file, "r+") as jsonFile: + try: + content = json.load(jsonFile) + for e in content["entries"]: + e.update({"hc": {}}) + content["totals"].update({"hc": {}}) + content["names"] = get_names(content["totals"], {}) + jsonFile.seek(0) + json.dump(content, jsonFile) + jsonFile.truncate() + log.debug(f"Format der Logdatei {file} aktualisiert.") + except Exception: + log.exception(f"Logfile {file} konnte nicht konvertiert werden.") + # Pub().pub("openWB/system/datastore_version", 19) From a9f6f3f57fbdcfef79922637bc84a5da88ebac98 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 09:12:31 +0200 Subject: [PATCH 090/121] fix --- .../measurement_logging/update_daily_yields.py | 3 ++- packages/helpermodules/measurement_logging/write_log.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/helpermodules/measurement_logging/update_daily_yields.py b/packages/helpermodules/measurement_logging/update_daily_yields.py index 895e60a2e3..1d5ee42a7a 100644 --- a/packages/helpermodules/measurement_logging/update_daily_yields.py +++ b/packages/helpermodules/measurement_logging/update_daily_yields.py @@ -18,7 +18,8 @@ def update_daily_yields(entries): """ totals = get_totals(entries) [update_module_yields(type, totals) for type in ("bat", "counter", "cp", "pv")] - data.data.counter_all_data.data.set.daily_yield_home_consumption = totals["hc"]["imported"] + data.data.counter_all_data.data.set.daily_yield_home_consumption = totals["hc"]["all"]["imported"] + Pub().pub("openWB/set/counter/set/daily_yield_home_consumption", totals["hc"]["all"]["imported"]) def update_module_yields(module: str, totals: Dict) -> None: diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index 9042ece40b..4f13e1bfb4 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -79,7 +79,7 @@ # }, # ... (dynamisch, je nach Anzahl konfigurierter Geräte) # }, -# "hc": Wh # Hausverbrauch +# "hc": {"all": "imported": Wh # Hausverbrauch} # }], # "names": "names": {"sh1": "", "cp1": "", "counter2": "", "pv3": ""} # } @@ -155,6 +155,8 @@ def save_log(folder): sh_dict, sh_names = LegacySmartHomeLogData().update() + hc_dict = {"all": {"imported": data.data.counter_all_data.data.set.imported_home_consumption}} + new_entry = { "timestamp": current_timestamp, "date": date, @@ -164,7 +166,7 @@ def save_log(folder): "pv": pv_dict, "bat": bat_dict, "sh": sh_dict, - "hc": data.data.counter_all_data.data.set.imported_home_consumption + "hc": hc_dict } # json-Objekt in Datei einfügen From 13f4026fa50e14629da79b07429c268bec726383 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 09:15:20 +0200 Subject: [PATCH 091/121] fix --- packages/control/counter_home_consumption_test.py | 15 --------------- packages/helpermodules/update_config.py | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/packages/control/counter_home_consumption_test.py b/packages/control/counter_home_consumption_test.py index 95f6664f3c..f6d8a21bd7 100644 --- a/packages/control/counter_home_consumption_test.py +++ b/packages/control/counter_home_consumption_test.py @@ -50,18 +50,3 @@ def test_set_home_consumption(home_consumption: int, # evaluation assert c.data.set.invalid_home_consumption == expected_invalid_home_consumption assert c.data.set.home_consumption == expected_home_consumption - - -@pytest.mark.parametrize("counter_all", - [pytest.param(hierarchy_standard, id="standard"), - pytest.param(hierarchy_hybrid, id="hybrid"), - pytest.param(hierarchy_nested, id="nested")]) -def testcalc_daily_yield_home_consumption(counter_all: Callable[[], CounterAll], data_): - # - c = counter_all() - - # execution - c.calc_home_consumption_imported() - - # evaluation - assert c.data.set.daily_yield_home_consumption == 14000 diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index a79f5b88f3..580b746993 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -836,4 +836,4 @@ def upgrade_datastore_18(self) -> None: log.debug(f"Format der Logdatei {file} aktualisiert.") except Exception: log.exception(f"Logfile {file} konnte nicht konvertiert werden.") - # Pub().pub("openWB/system/datastore_version", 19) + Pub().pub("openWB/system/datastore_version", 19) From bc79ec36f5a64f62b18177ea48ac23a12cc133dd Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 09:32:50 +0200 Subject: [PATCH 092/121] fix test --- .../measurement_logging/conftest.py | 20 ++++++++++++++----- .../measurement_logging/process_log.py | 2 +- .../measurement_logging/write_log.py | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/helpermodules/measurement_logging/conftest.py b/packages/helpermodules/measurement_logging/conftest.py index c98590ed34..da787419ae 100644 --- a/packages/helpermodules/measurement_logging/conftest.py +++ b/packages/helpermodules/measurement_logging/conftest.py @@ -32,7 +32,8 @@ def daily_log_sample(): "pv": {"pv1": {"exported": 804}, "all": {"exported": 804}}, "bat": {"bat2": {"imported": 2.42, "exported": 1742.135, "soc": 15}, "all": {"imported": 2.42, "exported": 1742.135, "soc": 15}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.1, "exported": 0}}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.1, "exported": 0}}, + "hc": {"all": {"imported": 100}}}, {"timestamp": 1690530060, "date": "09:40", "cp": { @@ -45,7 +46,8 @@ def daily_log_sample(): "pv": {"pv1": {"exported": 930}, "all": {"exported": 930}}, "bat": {"bat2": {"imported": 2.42, "exported": 2017.569, "soc": 10}, "all": {"imported": 2.42, "exported": 2017.569, "soc": 10}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.2, "exported": 0}}}, + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.2, "exported": 0}}, + "hc": {"all": {"imported": 110}}}, {"timestamp": 1690530360, "date": "09:45", "cp": { @@ -58,7 +60,8 @@ def daily_log_sample(): "pv": {"pv1": {"exported": 1055}, "all": {"exported": 1055}}, "bat": {"bat2": {"imported": 2.42, "exported": 2292.992, "soc": 4}, "all": {"imported": 2.42, "exported": 2292.992, "soc": 4}}, - "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.4, "exported": 0}}} + "sh": {"sh1": {"temp0": 300, "temp1": 300, "temp2": 300, "imported": 0.4, "exported": 0}}, + "hc": {"all": {"imported": 120}}} ] @@ -73,7 +76,8 @@ def daily_log_totals(): 'cp5': {'exported': 0, 'imported': 191.928}, 'cp6': {'exported': 0, 'imported': 0}}, 'pv': {'all': {'exported': 251}, 'pv1': {'exported': 251}}, - "sh": {"sh1": {"imported": 0.3, "exported": 0}}} + "sh": {"sh1": {"imported": 0.3, "exported": 0}}, + "hc": {"all": {"imported": 20}}} @pytest.fixture() @@ -188,4 +192,10 @@ def daily_log_entry_kw(): "energy_imported": 0.0001, "energy_exported": 0 } - }} + }, + 'hc': {'all': {'energy_exported': 0.0, + 'energy_imported': 0.01, + 'imported': 100, + 'power_average': 0.12040133779264214, + 'power_exported': 0, + 'power_imported': 0.12040133779264214}}} diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index fcaeeb240e..7570a32a71 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -270,7 +270,7 @@ def _process_entries(data, calculation): def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): time_diff = next_entry["timestamp"] - entry["timestamp"] - for type in ("bat", "counter", "cp", "pv", "sh"): + for type in ("bat", "counter", "cp", "pv", "sh", "hc"): for module in entry[type].keys(): try: new_data = {} diff --git a/packages/helpermodules/measurement_logging/write_log.py b/packages/helpermodules/measurement_logging/write_log.py index 4f13e1bfb4..8a1b4259a1 100644 --- a/packages/helpermodules/measurement_logging/write_log.py +++ b/packages/helpermodules/measurement_logging/write_log.py @@ -79,7 +79,7 @@ # }, # ... (dynamisch, je nach Anzahl konfigurierter Geräte) # }, -# "hc": {"all": "imported": Wh # Hausverbrauch} +# "hc": {"all": {"imported": Wh # Hausverbrauch}} # }], # "names": "names": {"sh1": "", "cp1": "", "counter2": "", "pv3": ""} # } From d84fe9639e33766d2f689bbbc7a9e6b112dda09f Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 24 Aug 2023 11:09:08 +0200 Subject: [PATCH 093/121] fix datastore version --- packages/helpermodules/update_config.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 580b746993..d807822b3f 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -9,8 +9,9 @@ from typing import List from paho.mqtt.client import Client as MqttClient, MQTTMessage import dataclass_utils -from control.chargepoint.chargepoint_template import get_chargepoint_template_default +from control.chargepoint.chargepoint_template import get_chargepoint_template_default +from helpermodules import timecheck from helpermodules.broker import InternalBrokerClient from helpermodules.measurement_logging.process_log import get_totals from helpermodules.measurement_logging.write_log import get_names @@ -820,9 +821,7 @@ def upgrade_datastore_17(self) -> None: Pub().pub("openWB/system/datastore_version", 18) def upgrade_datastore_18(self) -> None: - files = glob.glob("/var/www/html/openWB/data/daily_log/*") - files.extend(glob.glob("/var/www/html/openWB/data/monthly_log/*")) - for file in files: + def convert_file(file): with open(file, "r+") as jsonFile: try: content = json.load(jsonFile) @@ -836,4 +835,6 @@ def upgrade_datastore_18(self) -> None: log.debug(f"Format der Logdatei {file} aktualisiert.") except Exception: log.exception(f"Logfile {file} konnte nicht konvertiert werden.") + convert_file(f"/var/www/html/openWB/data/daily_log/{timecheck.create_timestamp_YYYYMMDD()}.json") + convert_file(f"/var/www/html/openWB/data/monthly_log/{timecheck.create_timestamp_YYYYMM()}.json") Pub().pub("openWB/system/datastore_version", 19) From aabe17a36bc989559f05ecb7a543791c7f030cec Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 29 Aug 2023 09:12:44 +0200 Subject: [PATCH 094/121] calc daily yields only one time, fix new data.data names --- packages/control/bat_all.py | 8 ++++---- packages/control/pv_all.py | 7 ++----- .../measurement_logging/update_daily_yields.py | 10 +++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index aacd351a29..60d45e0d46 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -101,15 +101,15 @@ def calc_power_for_all_components(self): self.data.get.power += battery.data.get.power self.data.get.imported += battery.data.get.imported self.data.get.exported += battery.data.get.exported - self.data.get.daily_exported += battery.data.get.daily_exported - self.data.get.daily_imported += battery.data.get.daily_imported soc_sum += battery.data.get.soc soc_count += 1 except Exception: log.exception(f"Fehler im Bat-Modul {battery.num}") self.data.get.soc = int(soc_sum / soc_count) - # Alle Summen-Topics im Dict veröffentlichen - {Pub().pub("openWB/set/bat/get/"+k, v) for (k, v) in asdict(self.data.get).items()} + Pub().pub("openWB/set/bat/get/power", self.data.get.power) + Pub().pub("openWB/set/bat/get/exported", self.data.get.exported) + Pub().pub("openWB/set/bat/get/imported", self.data.get.imported) + Pub().pub("openWB/set/bat/get/soc", self.data.get.soc) else: self.data.config.configured = False Pub().pub("openWB/set/bat/config/configured", self.data.config.configured) diff --git a/packages/control/pv_all.py b/packages/control/pv_all.py index bf6bbcade4..78fde28cca 100644 --- a/packages/control/pv_all.py +++ b/packages/control/pv_all.py @@ -63,13 +63,10 @@ def calc_power_for_all_components(self) -> None: module_data = data.data.pv_data[module].data self.data.get.power += module_data.get.power self.data.get.exported += module_data.get.exported - self.data.get.daily_exported += module_data.get.daily_exported - self.data.get.monthly_exported += module_data.get.monthly_exported - self.data.get.yearly_exported += module_data.get.yearly_exported except Exception: log.exception("Fehler im allgemeinen PV-Modul für "+str(module)) - # Alle Summen-Topics im Dict veröffentlichen - {Pub().pub("openWB/set/pv/get/"+k, v) for (k, v) in asdict(self.data.get).items()} + Pub().pub("openWB/set/pv/get/power", self.data.get.power) + Pub().pub("openWB/set/pv/get/exported", self.data.get.exported) self.data.config.configured = True Pub().pub("openWB/set/pv/config/configured", self.data.config.configured) else: diff --git a/packages/helpermodules/measurement_logging/update_daily_yields.py b/packages/helpermodules/measurement_logging/update_daily_yields.py index 1d5ee42a7a..ba4b42e24b 100644 --- a/packages/helpermodules/measurement_logging/update_daily_yields.py +++ b/packages/helpermodules/measurement_logging/update_daily_yields.py @@ -45,14 +45,14 @@ def update_exported(daily_exported: float) -> None: Pub().pub("openWB/set/pv/get/daily_exported", daily_exported) for m in totals[module]: - if m in getattr(data.data, f"{module}_data"): - module_data = getattr(data.data, f"{module}_data")[m] + if m in getattr(data.data, f"{module}_data") or m == "all": + if m == "all": + module_data = getattr(data.data, f"{module}_all_data") + else: + module_data = getattr(data.data, f"{module}_data")[m] if module == "pv": update_exported(totals[module][m]["exported"]) else: update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) else: log.info(f"Modul {m} wurde zwischenzeitlich gelöscht und wird daher nicht mehr aufgeführt.") - if module == "cp" and m == "all": - module_data = data.data.cp_all_data - update_imported_exported(totals[module][m]["imported"], totals[module][m]["exported"]) From c017fa6f0ec50a1c4b455b8d8c253c43e44643e5 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 29 Aug 2023 11:05:50 +0200 Subject: [PATCH 095/121] fix datastore upgrade --- packages/helpermodules/update_config.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index d807822b3f..14cb59d79e 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -822,19 +822,17 @@ def upgrade_datastore_17(self) -> None: def upgrade_datastore_18(self) -> None: def convert_file(file): - with open(file, "r+") as jsonFile: - try: + try: + with open(file, "r+") as jsonFile: content = json.load(jsonFile) for e in content["entries"]: e.update({"hc": {}}) - content["totals"].update({"hc": {}}) - content["names"] = get_names(content["totals"], {}) jsonFile.seek(0) json.dump(content, jsonFile) jsonFile.truncate() log.debug(f"Format der Logdatei {file} aktualisiert.") - except Exception: - log.exception(f"Logfile {file} konnte nicht konvertiert werden.") + except Exception: + log.exception(f"Logfile {file} konnte nicht konvertiert werden.") convert_file(f"/var/www/html/openWB/data/daily_log/{timecheck.create_timestamp_YYYYMMDD()}.json") convert_file(f"/var/www/html/openWB/data/monthly_log/{timecheck.create_timestamp_YYYYMM()}.json") Pub().pub("openWB/system/datastore_version", 19) From 56c78c47155db5d832a635980b91b44cb9e7dc63 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 29 Aug 2023 11:06:19 +0200 Subject: [PATCH 096/121] catch missing measurement groups --- .../measurement_logging/process_log.py | 141 +++++++++--------- 1 file changed, 71 insertions(+), 70 deletions(-) diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index 7570a32a71..8073b25df7 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -35,40 +35,41 @@ def get_totals(entries: List) -> Dict: prev_entry: Dict = {} for group in totals.keys(): for entry in entries: - for module in entry[group]: - try: - if not prev_entry or module not in totals[group]: - if group == "hc": - totals[group][module] = {"imported": 0} - elif group == "pv": - totals[group][module] = {"exported": 0} + if group in entry: + for module in entry[group]: + try: + if not prev_entry or module not in totals[group]: + if group == "hc": + totals[group][module] = {"imported": 0} + elif group == "pv": + totals[group][module] = {"exported": 0} + else: + totals[group][module] = {"imported": 0, "exported": 0} else: - totals[group][module] = {"imported": 0, "exported": 0} - else: - for key, value in entry[group][module].items(): - if key != "soc" and key != "grid" and "temp" not in key: - if value == "": - # Manchmal fehlen Werte im alten Log - value = 0 - try: - prev_value = prev_entry[group][module][key] - # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden - # die Werte zusammen addiert. - except KeyError: - prev_value = entry[group][module][key] - if prev_value == "": - # Manchmal fehlen Werte im alten Log - prev_value = 0 - # avoid floating point issues with using Decimal - value = (Decimal(str(value)) - - Decimal(str(prev_value)) - + Decimal(str(totals[group][module][key]))) - value = f'{value: f}' - # remove trailing zeros - totals[group][module][key] = string_to_float( - value) if "." in value else string_to_int(value) - except Exception: - log.exception(f"Fehler beim Berechnen der Summe von {module}") + for key, value in entry[group][module].items(): + if key != "soc" and key != "grid" and "temp" not in key: + if value == "": + # Manchmal fehlen Werte im alten Log + value = 0 + try: + prev_value = prev_entry[group][module][key] + # Wenn ein Modul neu hinzugefügt wurde, das es mit dieser ID schonmal gab, werden + # die Werte zusammen addiert. + except KeyError: + prev_value = entry[group][module][key] + if prev_value == "": + # Manchmal fehlen Werte im alten Log + prev_value = 0 + # avoid floating point issues with using Decimal + value = (Decimal(str(value)) + - Decimal(str(prev_value)) + + Decimal(str(totals[group][module][key]))) + value = f'{value: f}' + # remove trailing zeros + totals[group][module][key] = string_to_float( + value) if "." in value else string_to_int(value) + except Exception: + log.exception(f"Fehler beim Berechnen der Summe von {module}") prev_entry = entry return totals @@ -271,43 +272,43 @@ def _process_entries(data, calculation): def _process_entry(entry: dict, next_entry: dict, calculation: CalculationType): time_diff = next_entry["timestamp"] - entry["timestamp"] for type in ("bat", "counter", "cp", "pv", "sh", "hc"): - for module in entry[type].keys(): - try: - new_data = {} - if "imported" in entry[type][module].keys() or "exported" in entry[type][module].keys(): - try: - value_imported = entry[type][module]["imported"] - except KeyError: - value_imported = 0 - try: - next_value_imported = next_entry[type][module]["imported"] - except KeyError: - next_value_imported = value_imported - try: - value_exported = entry[type][module]["exported"] - except KeyError: - value_exported = 0 - try: - next_value_exported = next_entry[type][module]["exported"] - except KeyError: - next_value_exported = value_exported - average_power = _calculate_average_power(time_diff, value_imported, next_value_imported, - value_exported, next_value_exported) - if calculation in [CalculationType.POWER, CalculationType.ALL]: - new_data.update({ - "power_average": average_power, - "power_imported": average_power if average_power >= 0 else 0, - "power_exported": average_power * -1 if average_power < 0 else 0 - }) - if calculation in [CalculationType.ENERGY, CalculationType.ALL]: - new_data.update({ - "energy_imported": _calculate_energy_difference(value_imported, next_value_imported), - "energy_exported": _calculate_energy_difference(value_exported, next_value_exported) - }) - entry[type][module].update(new_data) - except Exception: - log.exception("Fehler beim Berechnen der Leistung") - # ToDo: add home consumption + if type in entry: + for module in entry[type].keys(): + try: + new_data = {} + if "imported" in entry[type][module].keys() or "exported" in entry[type][module].keys(): + try: + value_imported = entry[type][module]["imported"] + except KeyError: + value_imported = 0 + try: + next_value_imported = next_entry[type][module]["imported"] + except KeyError: + next_value_imported = value_imported + try: + value_exported = entry[type][module]["exported"] + except KeyError: + value_exported = 0 + try: + next_value_exported = next_entry[type][module]["exported"] + except KeyError: + next_value_exported = value_exported + average_power = _calculate_average_power(time_diff, value_imported, next_value_imported, + value_exported, next_value_exported) + if calculation in [CalculationType.POWER, CalculationType.ALL]: + new_data.update({ + "power_average": average_power, + "power_imported": average_power if average_power >= 0 else 0, + "power_exported": average_power * -1 if average_power < 0 else 0 + }) + if calculation in [CalculationType.ENERGY, CalculationType.ALL]: + new_data.update({ + "energy_imported": _calculate_energy_difference(value_imported, next_value_imported), + "energy_exported": _calculate_energy_difference(value_exported, next_value_exported) + }) + entry[type][module].update(new_data) + except Exception: + log.exception("Fehler beim Berechnen der Leistung") return entry From 96997ab7583a2032519e0b8ccad4e32bde820e28 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 25 Aug 2023 11:36:27 +0200 Subject: [PATCH 097/121] fix control range --- packages/control/counter.py | 4 ++-- packages/control/ev.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/control/counter.py b/packages/control/counter.py index 96ec68226a..30f1ae8a64 100644 --- a/packages/control/counter.py +++ b/packages/control/counter.py @@ -193,7 +193,7 @@ def calc_surplus(self): # eingeschaltet werden. Es darf bloß nicht für zu viele zB die Einschaltverzögerung gestartet werden. evu_counter = data.data.counter_all_data.get_evu_counter() bat_surplus = data.data.bat_all_data.power_for_bat_charging() - surplus = - evu_counter.data.get.power + bat_surplus + surplus = evu_counter.data.get.power - bat_surplus ranged_surplus = self._control_range(surplus) log.info(f"Überschuss zur PV-geführten Ladung: {ranged_surplus}W") return ranged_surplus @@ -356,7 +356,7 @@ def calc_switch_off_threshold(self, chargepoint: Chargepoint) -> Tuple[float, fl return threshold, feed_in_yield def calc_switch_off(self, chargepoint: Chargepoint) -> Tuple[float, float]: - switch_off_power = - self.calc_surplus() - self.data.set.released_surplus + switch_off_power = self.calc_surplus() - self.data.set.released_surplus threshold, feed_in_yield = self.calc_switch_off_threshold(chargepoint) log.debug(f'LP{chargepoint.num} Switch-Off-Threshold prüfen: {switch_off_power}W, Schwelle: {threshold}W, ' f'freigegebener Überschuss {self.data.set.released_surplus}W, Einspeisegrenze {feed_in_yield}W') diff --git a/packages/control/ev.py b/packages/control/ev.py index f65e930ac7..907def610f 100644 --- a/packages/control/ev.py +++ b/packages/control/ev.py @@ -475,7 +475,7 @@ def _check_phase_switch_conditions(self, feed_in_yield = 0 evu_counter = data.data.counter_all_data.get_evu_counter() # verbleibender EVU-Überschuss unter Berücksichtigung der Einspeisegrenze und Speicherleistung - all_surplus = (evu_counter.calc_surplus() - evu_counter.data.set.released_surplus + + all_surplus = (-evu_counter.calc_surplus() - evu_counter.data.set.released_surplus + evu_counter.data.set.reserved_surplus - feed_in_yield) condition_1_to_3 = (max(get_currents) > max_current and all_surplus > self.ev_template.data.min_current * max_phases_ev * 230 @@ -512,7 +512,7 @@ def auto_phase_switch(self, feed_in_yield = 0 evu_counter = data.data.counter_all_data.get_evu_counter() # verbleibender EVU-Überschuss unter Berücksichtigung der Einspeisegrenze und Speicherleistung - all_surplus = (evu_counter.calc_surplus() - evu_counter.data.set.released_surplus + + all_surplus = (-evu_counter.calc_surplus() - evu_counter.data.set.released_surplus + evu_counter.data.set.reserved_surplus - feed_in_yield) if phases_in_use == 1: direction_str = f"Umschaltverzögerung von 1 auf {max_phases}" From 1f41ff88f488b493f87aa53e1bd98ed5549f1ca4 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 29 Aug 2023 16:34:01 +0200 Subject: [PATCH 098/121] counter must be on top of hierarchy --- packages/control/counter_all.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py index 5fa8c7c436..e56acac49f 100644 --- a/packages/control/counter_all.py +++ b/packages/control/counter_all.py @@ -74,14 +74,14 @@ def get_evu_counter_str(self) -> str: def get_id_evu_counter(self) -> int: try: - for item in self.data.get.hierarchy: - if ComponentType.COUNTER.value == item["type"]: - return item['id'] + if ComponentType.COUNTER.value == self.data.get.hierarchy[0]["type"]: + return self.data.get.hierarchy[0]['id'] else: raise TypeError except Exception: log.error( - "Ohne Konfiguration eines EVU-Zählers an der Spitze der Hierarchie ist keine Regelung möglich.") + "Ohne Konfiguration eines EVU-Zählers an der Spitze der Hierarchie ist keine Regelung und keine Ladung " + "möglich.") raise def put_stats(self) -> None: From bfdf1e792f87cddf73fd22966cf5deb7eb9f8d55 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Aug 2023 07:55:24 +0200 Subject: [PATCH 099/121] fix test --- packages/control/auto_phase_switch_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/control/auto_phase_switch_test.py b/packages/control/auto_phase_switch_test.py index a3ed86f35f..b7d8e5a4ac 100644 --- a/packages/control/auto_phase_switch_test.py +++ b/packages/control/auto_phase_switch_test.py @@ -62,18 +62,18 @@ def __init__(self, cases = [ Params("1to3, enough power, start timer", max_current_single_phase=16, timestamp_auto_phase_switch=None, - phases_to_use=1, required_current=6, evu_surplus=800, reserved_evu_overhang=0, get_currents=[15.6, 0, 0], + phases_to_use=1, required_current=6, evu_surplus=-800, reserved_evu_overhang=0, get_currents=[15.6, 0, 0], get_power=3450, state=ChargepointState.CHARGING_ALLOWED, expected_phases_to_use=1, expected_current=6, expected_message="Umschaltverzögerung von 1 auf 3 Phasen für 7.0 Min aktiv.", expected_timestamp_auto_phase_switch="05/16/2022, 08:40:52", expected_state=ChargepointState.PHASE_SWITCH_DELAY), Params("1to3, not enough power, start timer", max_current_single_phase=16, timestamp_auto_phase_switch=None, - phases_to_use=1, required_current=6, evu_surplus=300, reserved_evu_overhang=0, get_currents=[15.6, 0, 0], + phases_to_use=1, required_current=6, evu_surplus=-300, reserved_evu_overhang=0, get_currents=[15.6, 0, 0], get_power=3450, state=ChargepointState.CHARGING_ALLOWED, expected_phases_to_use=1, expected_current=6, expected_state=ChargepointState.CHARGING_ALLOWED), Params("1to3, enough power, timer not expired", max_current_single_phase=16, timestamp_auto_phase_switch="05/16/2022, 08:35:52", phases_to_use=1, required_current=6, - evu_surplus=1200, reserved_evu_overhang=460, get_currents=[15.6, 0, 0], get_power=3450, + evu_surplus=-1200, reserved_evu_overhang=460, get_currents=[15.6, 0, 0], get_power=3450, state=ChargepointState.PHASE_SWITCH_DELAY, expected_phases_to_use=1, expected_current=6, expected_message="Umschaltverzögerung von 1 auf 3 Phasen für 7.0 Min aktiv.", expected_timestamp_auto_phase_switch="05/16/2022, 08:40:52", @@ -87,7 +87,7 @@ def __init__(self, expected_state=ChargepointState.CHARGING_ALLOWED), Params("1to3, enough power, timer expired", max_current_single_phase=16, timestamp_auto_phase_switch="05/16/2022, 08:32:52", phases_to_use=1, required_current=6, - evu_surplus=1200, reserved_evu_overhang=460, get_currents=[15.6, 0, 0], get_power=3450, + evu_surplus=-1200, reserved_evu_overhang=460, get_currents=[15.6, 0, 0], get_power=3450, state=ChargepointState.PHASE_SWITCH_DELAY, expected_phases_to_use=3, expected_current=6, expected_state=ChargepointState.PHASE_SWITCH_DELAY_EXPIRED), @@ -108,7 +108,7 @@ def __init__(self, expected_state=ChargepointState.PHASE_SWITCH_DELAY), Params("3to1, enough power, timer not expired", max_current_single_phase=16, timestamp_auto_phase_switch="05/16/2022, 08:35:52", phases_to_use=3, required_current=6, - evu_surplus=860, reserved_evu_overhang=0, get_currents=[4.5, 4.4, 5.8], + evu_surplus=-860, reserved_evu_overhang=0, get_currents=[4.5, 4.4, 5.8], get_power=3381, state=ChargepointState.PHASE_SWITCH_DELAY, expected_phases_to_use=3, expected_current=6, expected_message=f"Umschaltverzögerung von 3 auf 1 Phasen abgebrochen{Ev.ENOUGH_POWER}", expected_timestamp_auto_phase_switch="05/16/2022, 08:40:52", From 30ee58b1d8fa940df2cb83a833aff62ea0bf5a09 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 30 Aug 2023 11:26:26 +0200 Subject: [PATCH 100/121] run update soc as thread --- packages/main.py | 3 ++- packages/modules/update_soc.py | 23 +++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/main.py b/packages/main.py index 5845d041c9..43905f7b5e 100755 --- a/packages/main.py +++ b/packages/main.py @@ -140,7 +140,6 @@ def handler_random_nightly(self): def schedule_jobs(): [schedule.every().minute.at(f":{i:02d}").do(handler.handler10Sec).tag("algorithm") for i in range(0, 60, 10)] - [schedule.every().minute.at(f":{i:02d}").do(soc.update).tag("algorithm") for i in range(0, 60, 5)] [schedule.every().minute.at(f":{i:02d}").do(smarthome_handler).tag("algorithm") for i in range(0, 60, 5)] [schedule.every().hour.at(f":{i:02d}").do(handler.handler5Min) for i in range(0, 60, 5)] [schedule.every().hour.at(f":{i:02d}").do(handler.handler5MinAlgorithm).tag("algorithm") for i in range(0, 60, 5)] @@ -208,6 +207,7 @@ def schedule_jobs(): t_sub = Thread(target=sub.sub_topics, args=(), name="Subdata") t_set = Thread(target=set.set_data, args=(), name="Setdata") t_comm = Thread(target=comm.sub_commands, args=(), name="Commands") + t_soc = Thread(target=soc.update, args=(), name="SoC") t_internal_chargepoint = Thread(target=general_internal_chargepoint_handler.handler, args=(), name="Internal Chargepoint") if hasattr(rfid0, "input_device"): @@ -220,6 +220,7 @@ def schedule_jobs(): t_sub.start() t_set.start() t_comm.start() + t_soc.start() t_internal_chargepoint.start() # Warten, damit subdata Zeit hat, alle Topics auf dem Broker zu empfangen. event_update_config_completed.wait(300) diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py index 1798011e9d..b4b61ab53b 100644 --- a/packages/modules/update_soc.py +++ b/packages/modules/update_soc.py @@ -1,4 +1,5 @@ import logging +import time from typing import List, Tuple import copy from threading import Event, Thread @@ -23,17 +24,19 @@ def __init__(self) -> None: self.event_vehicle_update_completed.set() def update(self) -> None: - topic = "openWB/set/vehicle/set/vehicle_update_completed" - try: - threads_update, threads_store = self._get_threads() - with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): + while True: + topic = "openWB/set/vehicle/set/vehicle_update_completed" + try: threads_update, threads_store = self._get_threads() - thread_handler(threads_update, 300) - with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): - # threads_store = self._filter_failed_store_threads(threads_store) - thread_handler(threads_store, data.data.general_data.data.control_interval/3) - except Exception: - log.exception("Fehler im update_soc-Modul") + with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): + threads_update, threads_store = self._get_threads() + thread_handler(threads_update, 300) + with ModuleUpdateCompletedContext(self.event_vehicle_update_completed, topic): + # threads_store = self._filter_failed_store_threads(threads_store) + thread_handler(threads_store, data.data.general_data.data.control_interval/3) + except Exception: + log.exception("Fehler im update_soc-Modul") + time.sleep(5) def _get_threads(self) -> Tuple[List[Thread], List[Thread]]: threads_update, threads_store = [], [] From 5b5fe85965f18346835f457fa3c2fe4198413674 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 31 Aug 2023 08:29:26 +0200 Subject: [PATCH 101/121] no exception log if file not found --- packages/helpermodules/update_config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 14cb59d79e..72af5e1a0e 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -831,6 +831,8 @@ def convert_file(file): json.dump(content, jsonFile) jsonFile.truncate() log.debug(f"Format der Logdatei {file} aktualisiert.") + except FileNotFoundError: + pass except Exception: log.exception(f"Logfile {file} konnte nicht konvertiert werden.") convert_file(f"/var/www/html/openWB/data/daily_log/{timecheck.create_timestamp_YYYYMMDD()}.json") From b20350261dcdbeb295e09e953ed24f68b66f8c0e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Thu, 31 Aug 2023 09:47:36 +0200 Subject: [PATCH 102/121] improve wiki hybrid screenshot --- docs/standard.png | Bin 85940 -> 82923 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/standard.png b/docs/standard.png index 22865d29c53b515c1e3d51c0596b73a73732118f..78ab4db3097a94203d722562dfc964b368d602b2 100644 GIT binary patch literal 82923 zcmeFZby!qgy9Z1OiUJ~n(nv}R3P^)U3k+Qjh?F$a9U_iMw{*kMf(#8KA|N6?)X)t> z$It`c_Icj(p7(pi^ZobLb-1pX+3daYzVCI{`mG%TQk5qnq$0$^!Xi>sc&dSgbp?ur zg*$o`AGjkqOjm@3g{@^JBLh;DkzoKiIapZPnqy(zkG6|~D?h=$9W2@Xpw(~S)xup1 zQk|$rNwRoEFRzgkiD%@;Aor}a`Ua-pHw7M5Yb$H^4bVL$;wBOhyn5?n9hy0zo5KLym9+ctb6dOi>K02-@?;ywPz8- zN7>2xgapA3!3{&Xx5)f%9>`IjJ;k*g7)OneEFJcE2v*)lvad0|iBz;m`qB$^+4Fa6 zOeU%fZl@Drzs1Zx!^#jLmt4CormrQpO?bMH9Le{2etL4KsoQc}EfA)6ILzc&hfgcx z+UtBnoV|8+;5PW!3ZYTCDAevF;D+iuvA^5q_sLjVRw!&Y+C)n=Ymv0fIYTwo#Jx!z zVFQr)gSnofg^CIm2XK8A3lEzL>k4p%4SXc9ssDW~hkYLl_pkdnSXdA%EWCe}Q3ZZ~ z{Y3$vUv>We#f^D~MF9MF3;1|s;`~?XE6_~b|GLH<1)gC^Ysx4p0>7H3PUhzJ&aWI? zUI^R*xQ=zrQ9<7s3yXr~*9TisgLxZhf5b{l&qYt=nTV-_9gm5b!%K4>4?D+S?O=&{ zhya&%<}M}-9(K0&&LSS-jDM970j_`D=4E8~tB8w@IHR5lh(X4|$(%uu=K;?HMhQX& z1_m)FGYb)or*i+Q4*Vz1_{zn_QG}P*-QAtX{UMKolO->ou&^-i1Abn9er})yx3j0c zi-`xfy))C_jr>iu_3 zzDJK9|7X?zc=XSz+Ro-qG7fe?pDq&r&98q|{?CX1swl?$YwG_&iofan*Ij_n5`<#B z|7My5;Va@5fW=reR!`NmfL}n$e*Iyu17G+5{{3~G-)fnkmWqWXg{AmZTFV1_ebPOZ zY-p-u$GCb>RF9n^`8KcKr^B-Q&li!=#4n|jUpTzaej!~Spw~x04zhhuB-{4piu4CY z*=QaHE;E~SXN#n$b=I+GZf>mCGV019%nvPlggrCFE_@D;s3X;AzXoFATxAHj>?@!Z zhYrUY(nd*)jdxQD>yoc8HyJXQAeUDD)!@trENmF(`i&2lwf^g#lvKCFW$pfT?+ZCL zjKi6!U{6UPdS z!glrZYyNrRl*OfA{bac0RMTz!><;^%%46d_A=E0@(WV-fd~Wc_hS4&0Ky_eX;7K*7 zU*%J&Cf^QKPm8m?%7b2X+xRZ!AIBB=9*2lnQposB6t@W2lFpYOlfdWn7s}1AM|5zaVmgA$$p02J~Ai^!i(wucf8SAm zwyi%*BXIXlZOx?m?%YC1OhN+1(2EE>M0vM|3>__>2EgV{qjI65kbY<`7PhM*S3RlQ`ds zw^CPWiw-!cjaAb%7vIfJz8U`Y`b`j|W|r`BO;XF7iHo{{&iu9oKNlNb2*evPw=J(h zV_#Ap-@249%%uQ@26#%ZV!Phr@~hC+PDi@S3Sr~TNdvM? zr<0YsBqaq_{p1pQxhz#*y$KrsdN(8OCa7b%{sHIZs^R`EpvyU9od27Lb>C?x_>RK# zlz3agxscl#v*%V&ogkXVTL=$PG5(tEaze+!0jovSuIskW5OgxlLl@bx(!ESZdA$FS ze?B}(aG%cm&i_?)SIY2E$e@M$&P@$6P)czN=jA<$83_mzUzw8CY}Ht4$~^&WSRG*_HUNUz@cM^&QP*|%lxNzLJQReVJH z2Xf}c-0B!)b)H9rEi*d=K~|_$vBGJ#75x=16yh*s&91i}dfTr_!N>a`0loHG^77d; z*8;P@aouBSwV?C;Y$VW8UsQwn`JL-re|3b1NN*)h*k2P-Le&+7n3>B7nL9+>_Sp|! zXyVuO@wa=wNoR2RVwM`X1`wb&m$v*B?{b=V1d{o=dSzv0u1U~|w0Nn}XPri)ax+WI zE(pCZvg*G9)oSO=Ps#Bk`+!Sf-0$G0umk zbB6H#g!2{V3OunQny>;VmK{4JM|0XmyO<}YVINw_->hP&CE4(D6GBaTiRYC{1{j5w z6DdNdW`sR+64Tb5LUr!!=d-zQ4N(@$FF_hda=Ou@x=YC0QQ*7*P=kmL9Vex0ed;e3H5ifi@W$!3WONg@w2xz|} zqQ95Hd&F;MQ;dzaDoEvWC!yuKawVAGVgm2iLc4d$y{6dU4qBrv(x0c}6i6N3>sjSf zAWXcl_X&>6msecMWmCEk;mAEWpnSQeib9Z`GZo&+0H2Ju8Qeavdb(@b8;{UbyI)jZ zTDC0Cr|N?WjMRxl464QGX?J-ZrUW}i)q9umq3W4(ew;BBu%&mBTPag6aFgkZ~FZa_s?AO6ta5#MYf5s zT{H2wey4XJt}?J9etNmrSLWPUac}StlO;MR@)}q+o-lH9a#ETwVae>#3Y>&&bw?8x z*~27!I5K@+A|CFx|I}wW;as*4tB%B>yrp_5SM_v@C1$F; z!TiUYLy72#*&LR<7L%Cc-B|l2x2NJzrj_C2?ADGfF=E)O9m?5C3>GQysG_f})#`I+IM^Fn zKVZ%Fs-jg%YO+evRJ+_u14Ob&t}#vtDmbiDA1K?n`DjbQT#ONX9mV_&a<=-J*&pTzN{_;pt?c+Qu`Uqa}hI-=(7t=EaY!8nrIL3;T4pTU2ZcVS3P-(s0-{SsB~ud*0*j>|Vy}#yF^#3_h2*oWu;+z@t!Fp48!P5%)Fr zu7vXYZjkr!0rmQWto(Mn-){NF$t&3DN|h=LnKk9Qkrw3PcZ()~2aX4g63<2~lns_u zWm$OMcugGMgG)6EO>i{B1>e?NuclIhP6h2rx3tB%Cv5~(8`i}X>3u%$^n2SG?_iE= zJPQ#c`{P6Qi=4cq)72Yu7zdJ^pOEIx?tprP;vJh8czro^H`Ol$q|f&TS=35R`l4eP zDT7X+51OMF!u|PP>AHK>*gQ>q-05wefBWaD*oxpDE;fw)GIQfN1L#D863<*m1EEuw z^W{p@j-CL~4^ukjMk+lb^ZS{5I>=-pB(26cImmKiOjl!w7&!+S3NRq(nOd_~hrPev zrdd;M)q^WUkB$3!J1){{WVjjCB`mT{V>MNh@KFg-wmD=KVZSO42SU1B#D%R z#u@?zhvaE)Rxnou-ys2^@AZ-wTzfaxuR_JiITeNtHNzdNkKUFf?0ok=@$B^91Lve5 zG$ZcNK6@wLC_LBH7t67S8AB|sUqsw^1VZs;EqwD+Y^ZAjPXqBeh}$H zy1SXEXQ3YDO~S9_J+ko-l&$X+P^)Yopb#0ahKYO4L@BuNZ0;?)j5;YrKWJuG`&@t!O_gE6*X)4T6ErG=Ti)CP%u*8`II;mNVNjZv_VcT;=E&jR|m zxav~IgXGgM3hYN7(%%I0z*U@?s#b#<{289#@AA}K;A(77_T~|BClztY{n#nZ+wNeA zaUO4y-XOb|Nz7#zbGkjKu|0d1x%Fa%0LQw4d6nRIe@;OR5O80c;mS5Xe$TI?wR$b~ zO(#Eil@sDTc>tUw z9i0ruh9M2g>5hbq#0Z82tl5_(ZhM}m2ce(`MZ>koD0+^G@WTM4^U=K+0rR*DXQPn_ zo{iJw>seh{E8gO0>rjV1!JSe=UJ2N#$N(vSrm9+OT)X_;JXxQVnj*h*9$3atwyoGW zvI{0prgo+CRL|&lT=n_G2I1h-F0YL>olld9pTe>iTU#dckKOByq9w(@cL#e^Q{{?rAUVmhC@ zy(28EMgi5f9EY@=Er%b-cTSg9i2??Ro$(*Yr7rFyw^;)@JLzxFxGPrJnS=(!x%xFC(A0Pve zIZIG_qaGh*>krQY0zSnq_BAMsw4@hom z$B9u`0hh6QrQPRz6*J_*O!bo8=jq|ueT9Bk=*DAU@pAr5qPTtApj5OJF5kjtth9-d z&1xVf_&fz7k^iY6)co?>x!W11H}BeWRzgu+)E96+srzdF%H%LvIQZM~!)e_>%T9E} za)1G(+lqr(NAhW>I*Ba8=Juw7_#SiT%5?Glk2(#J=%5GJ{f%>;oYCw&di)IYI;Y}w zF|nVseKY3*vAMq#X5CCt{MbWLST){H{hmw9S9*l;6@)5^39-4rM0FRlLNz0dl1{NG z{P@LFmJCF_iOR~5J1RYY1v(nH-YGS*Sw|c|(=h2GurNufh46I7V-7A}zual0_J9bO z)sxIPI!+FvjPg9Ci#XZhfnE3h%z@d>d0l$s>mzqbQsF9)E&%^z(NF-VW5XtAtIiFo z@emn}_HW;^YN|#`Yt){(&zmX@<}f=CkS*nXDi>~o+!fVy#l7HJ@GWIJNKEAQ?rr9< zh4(*yfNR|pJ90QO-9M4-M&yu?DjoUO)@Hbe=XvFGr;{5*W31@6rYxoln08od87BN@ zl}D=w5#UXV%kgLU>cz9}D4d5nC`{$*eozx%aaJm}kh8O=WnD|_sHc&ii7rBgtzj8d z^0NSzJx0=3XU2TK2{3ilc6ZcDsbVCL1v*nC9=;l>^OG`fze&zj0Qkfed#rGS?2G{% zR2-|k($Y6lMs{|M?NwdbhKh@^W;ng85u|rjyzJq5K+O1-1Q0=Vov)$ND5vh6S3cJ; z5G2PWA0FLhe}1Y961_BO^OOxpqAB9+^xSO&sXa%`DGDvtDr9t?_EjFx z(8OTkulskl^C(59(76lrwO;Bk6GeSG@5(#8*GM{v%8Q|-G|p~8XtlVu5C>HVTp z$G159f8KzigB?YC(6F$;CKm1Zk?qpy`%}fIE1J^s-vSIU7lsKZrXQA9B7Ta|5A+~lbnZvX$&F2QIgAE0Ke(8-O^RAv2`+DO)yzo@}5(4VO zSR`DmNWgP4^j3E=xL0Kyh*GoFB^bBr3fqNg3G=J$n=k6afij)%C*;$|rrqDVOK7Jv z+Uke?yivHFkX&8_PQ8dhnv^JsCz(0bEOX$tLU;QrfuO2Yp_@&luNIg$u4&nY zqn}4Z%I^GNUxvD=DBtZHNPi=@Cz-G1et(RpOYLp0qhZPLD(bSh{d8*xjK_bVF5`BY z(K5W9`gh}jg}nwu-FY8}O7t}~hBmvn4XfYUSqT8t87el^)lU1KXg7X-ZQMbhca#*= zu^aUi%=Xw}{So__RpC+f=7pcWX2z{vb)uYegPnt@r_OVL@1|gVx)<(5F;(nUR9bbS zc2^eSS8IG?H~H3^`>2B-M(JN2bJ|&8p5#^jYjF^_&n`9zDiHHe_&0S9(iu-~@v(%X)3w>k_xh@|~=%wH{mCpwF6MR&W!GDei^ zEMfx@8yOqcu_d@U?wvqrr+qEy74a{Nh@MiG8%!PFjQ>iXc;uiA&w=DZ3CP}w?pikS zUfH{oP`fUio4z7Rr_e^&j-K%T&}O=pgA(?AJR|GnUz=B3}LqSEHgacX%%TH7U>qVTBiD0_o?hj z8Z(HxZN{yy+a51`KCV1U#7MscwK|=>ke5pH>M4xb`4RxNENm5{MFop!^opzSZ*I|} zG`>66k%Yy)iM;c+kz%8B_bL=Us?Qrq5lI+yeaV-nj-=30mzKR7A;ZK*5u6}gGeO(@ z?7cnpc7UP-8+o<;Rbs<%Vwtnp?5_@BHUoO$k!h-ZM+w^GwQaG9Xd$l;3%wu7eDpCR z*h!{z0$&ZA#>M61;oBQr2OYsPqHiP%CB<^xo8$({>LxsnGI`)xxHC_*;rbZKfFmcT za023d@awGC#<>9^TZJKVM5r0;H%S{oKRi<%|)2=Wi{Mb|b3&e*^x+44NkBU}{8 zvhrrD?Ai;XdGg=gRjDuaKnl+Fq1D*j-J}Og`th-Ovaaq%e$D&!$2$6z`y)`~_|W$V zz`t=DvRF;-GI9Gxkx^VDQ>7l+#SPQ5aK*l8MJyCPw_ z3SJpK94tND$(9G{7?Pbq*NE~4mi5&AD{9>+*)o)G5BDMTfw$GSgQYe^EK;fcy?0pT z)Lt2B#)yqk3?epyOf9_Vyti$7C5AoNM$3`LG1pylc2}h+{d1AV%XRzRmLqs8q{=*ER9@!gE`N9B$jok>BZ&aWZQK)Ov z9u7H=ye~9uBXAn9P}ag!mn8VqfjACG7EeGe56cFcLJ8TpX=3vm8Dd$BGe=rlBLWQ6 zgywsiW4u=D)VsxAN`V{l&AO9mv?Z@>`Q)NVBSVVpa^)7uLDc9d*OlaCM!9YaSS-@R zBb#u4uf6I1@t~z_a)Nq(_E!QFc4(1rVIDV*m(rGVPA+&{+Go5vRClPBr^`glWxGy3 zEUi~WPmo@R(k>$~Pj&a5B-`GLG1V_Ct-74(gVtMw9Bb{7ze8W!j0umK`d)|{Y6zztP3?O^S(il zFjUj5&JIS~t8`|7Rm%t)MmOS9YdjmX7$fOjW;Ws6pstKOo!*=~wUoEgd`OoMr7wai z+uTK0C>P75CEX*pC<-tZ4|rfKUdyW{{)KnARkJYLtT~g;z!L=C!8FS?iW7t`Eb60p zHY)d+eYd+A8$O#mobs4#sjWFi=N@iZ?QiHvZTMf!O)l1rm+Qy&|0WYJ5&b5{wdER= zspvK7?*jda3&;^Bm8`tW3L;Q~bn%9wHj_S2Cv>FWrPMYQr5+;(tqCWIx+|v`*Fu;9 zRnJcNRJ#r`K-_eyxAmlY{(f(O2zuWwhHqWfG+E@?h_qkJ^0dO{WTdQsYi||-B}v5X zNcr7q58d5#c8(y@&84t=KuE%}d^>nX7k$G}iDd#4xcqQ)!%_?Za@u1qIF-_V=mnlx zgif8>d?>CToC+-?o1Vff%AL{P_I{jihz)~&5w@ATx&tM6OyReevv9*pFJ3_1Rpki{ zI}u4@7~5uaBYU}G%V`Ea4Dci7W^jM!E64%}IqzN*=g^`N@d$X{FX5z6+Pd12L6cYc zsn0|&tX1AMB@O6kvO%9r>x;WtkVePwJ=dvGD~%&fb?{=GX=L<%ifCw=>~rL-Axx*S z31M%9aTKQ}_LnMMiW@Ax|16@~5F^e=XD#m;tPdD^G{!ZvsoqAfP81wU~UrsJ=AMuNm|NI zY5S6`p;0Cv1i5<#{7+aso5Te~}kTbqMI9g7Jqntb2Acfhn?4KD%n z<67Ielf$OG4ImnTMT8aSx^kQ_1rt{_=@w~F1PA9$EjwhM_eD>g;^&lAy;j|L#dCJ7 z%l`Z@QN2JU&%{^JYV4_jWU~xmGp6%ure?$|26mMQEpw9r=7I~{7-8G@3h_#F8_*vax38b45kk=m znrhOJlFZogIR>sEy_DvfbMrdj(wu_5nt+=Cr6rg3sAUQv{ zDW>=qZPz%qaddjSeYkyIuTg14$DNK3p==mMFMnz63^0gXE7Z{*y4bXSJ9Kg{{#+)W zV+T{Avnz>F+BHt0t)iZ=mH8joY8RA4T<8E_w5VJ1*QIPy@wa;?CTfw&X)cZfSM|h0 z)cZHZ8f?7}&!3Q=@%h>`VlM8aHEAL0t_q>%EbA?fxmW+~ZNd4yxk7yzm7xN@OaLEAMi{MP`lD3@le?|!jHty8>R zo_RJ^hTQL2H!PedQg-u^nL4G(BARh_7kG(RKE1xG435{8vU~O<{)xht7mUN9-zfgI z0_+j5|NI$FXU0zT&I6GKYt_@!C8FQi_iKCVTN9w)CwSG@$+$)Wyr!$fAhcYoBd%Ot z0U1bH>Y*$;5#8=wzn0&jBpGiDb57E`a|_Qv8MHvViKQ6hkU7(Z@;5kJY5o@It@qUb1Zi6bb>7 zgs~p4fjwN0*T>eEG2tq6Akfe)u9vmtKt!whZtv1U3^z#tuYBhd;o>6#9F)_WJj2Vv z7rdLFWCH?_6zxarZv#XmMuPSKFvaL!U0&S!Yi$2JtpBCf|3k86W!y5a7>#sYQ-WC! z<-N>Pib;=FM{+-xza&@oYkk?0eeddy7atp|bY3PNtM~kTzHOxANxp;6cUsI0FmOw>XGZ&vx;+BPmRtK$r~FaZ1?!04{JG@l>hQ+I=&!0+uq~lw?cBtsi4f2DX6dFAry}cUpf1T?&Nwb6w1@bm2kPK zvCZDvi@#L;DLlq57n0wsUGv)^KUsimQBdu%WvbSibNPO?Q{(a)U8q%$jGy{Qae4m% z0WvtgCnS7w2K(J3?VQ*!nQc{K8L5q2LDN4dtSUf4`;}N6MR8DgMq>F9myt*6769B~ z+nGx?4i7-a&HTXz%qarFdb&e7?{3Fl%CAXs?Fj9*SXlS;e0_KoZJZDPRff7}Pa z21x?QBL)6KWQ{q%nXbbzItkpy_Y7<7MX{=mK3q-!0Bp8_gyjO;jRTu+$re5wBr17% zc~#X=ZCr(Nzh<$R*TX?|8&-c0Xpu2*`!RiMPx+zE7j&wHzRcdc?UCOVp@uFf;$bP=3-4EHUre=H)ybQzdrrctUvjW~L_ zBQmnF;ye&3dz%N`Va?+wIm;{)G*@H0AmwkWos?H?yQFcq_>k+jY-E#T=EpbDlhyr+%cR zG?^#waO^s^JCKa@N((^hsES+$P*uPJd|Ny{=7NHcKoc41lX=R^)LeY3Ne3}u8ApwI z-an9|WdZft;q6YdCIy{i1R3|W2RRd64M?{xgdA#oDrc#WXUciab`Ii6$DJ-oYDi%P z&H*%UlRe_=j}JYq`Far;jg7qGi*XCsio!T@u9a61CtYrh*-feLo5Fx^FAHdzn0G`d0?LxhAzbD}&_S_6{*C>P zT=hknw2$^7e8cNTyh46_TD#Zxl%LPzT^gZe0gRL>q?uWc;mag`K9H}H{5@2Y6+b=Z zKXF|8xTw!sijgLE_U>Lt>G{di*3Y{;?}DY5k3jWb?vbx4EmnP~9BWW+p?0`CI7n@TAk7y|2Df3^}I;hSQ_G(zi{ z7BuuHrG1g?Y+aKw1j^FVSz(ky(o?4|?7#bU zc~zER!-!*Dp|*6hZV%yp!G=g%mT=@ce%tx0R& zBOeLR{{VM|RN^7%cD_&Su_-O?E1g?CN3YUW`t`D2SnhSR-DzgfFQjbm*jsXoT|aAD z%FEOR7nw|5i4Aw2dP5_88pI<#f+nDKS^F|BR=Ich{n*+2y&8rW$@Ji=zst^3&*k1; zr6!o1oVMp-0ypcaq#fEQ=}8R$gG&qDZany6Eu9xnqIyBRe>AEv{z?PrA> zyb|j!bp@^t{tYA-=Sp-(JHi*sjt*tQbGQ0M%UuKfIvb~6YiE+TY0f#ElTpneq$(mId3Ogh*Su@s=L?LXc1#+&6NU30(Wa}8VwN52Gl#&&ti}QFx z7@nasTOr}%Sc1FY2q{x5aktaeVo`9}SPkU6V&Y+8u${G9Pjd)RFAIF^}- z1g_G<_gC+us$n~WLH4u0&N_6hw{-GuM} z$(osJw*mFim{#-l{Y0(qRbSbHu9kbrJpT>+3d{HWCTM;Q8Y;=~x+Pz>a&B6H zrG3!V7u{p(y8>bItGc(Vy6j9Mp}1dWbS)Tok5ALg~JX8PMyVm4%JFoqf3AoSL|( z1E&pV<7)Z3oWF#g9c&p~2-HmfHCHg8yAhVQ|McH(X##---$?0m%QOIv|1VhBBI>5y z^54KP)zE6sQMU?wL>67tUALPAJl}RRpNf~x+MRY$63|-4xvU&4Hknu!*(j_T3{2bV zbGiGRe%!Zpil1=NBG8A~q)lueM}0b+oI1llHqHq(3q7Q-JDWHBTJ1cKgAH>=xfy&8 zLe{yOGXI|k7PtT)qEx3~;m0W~PoyUQ1qu5I&q)(%yPFlr4EaR}(oz#3VfavKPJHeGt*1$EG( z^}1tvmPo(<{^KeQaKGs0#nfm0jZ|Y}Yp~;FT@CdtBNj-5_SBis z+DO@rY;~!^p;5mbkC74v%w8g{b+&ubRcx3b9sjEUm&R;gz0Dz;;qOyTQ@2JwS5_{( zmm>=5xv208_h@1n*MUZ{gj3^seW3KX3 zj{49(zGlRik+;lC`3g*8&*i%=M*O4@B2isDsKil-H7rJm2%`7bG}mqC_E%{hr#d4D z{{mni znl8LNrg+F50c$~5xO8j{%y*rJ9U^5;!$E7uJsBC4%TF-#RjyaikkGp24gXix$tO&2 zB=(UfICSgBNYtVE`mV0>vpOy~FQ*?1{?c#G+-qQujkY6nei(5Jz^|YSwrEBrZ51Z# z4Au0jePpk-|LxcvK%UjN03hZcyW}k6f;Pyf`6|TrHg1nk?PygawOX`RKK0t(*{~_W zcHM#8e&;Qfoi6`~MEpjoLlucOmjqTqjtFp>}bSovKk24w#!@(kHwVXR&;n zzq|#ep^H_S#QSvyzK2c6EEkzhohFvw0q==&W7yo`0o{ZychiTe(#Z+vRw?g_qsPz6 zRk@Te{;K8fsW+^KTCcXjV$1q59c7YvZWcsL>t#7^L2H>Ot9iVX4Sl#<0@Lz@PzOyG z9Tx_1Y4J>rtz-#f44)MJ#nOi0dEa(-f-wS?O*I#N!q?%{YCwQ+?x8eQZP8Q1NMEEA z0y{An2o^@XyES4ukzCUGxzRtPW(7PToO!Cp0$Kie9~)*7a$6(OQp(Q#aVcE+7qbYM zrvRTk+a38%#3J=LZe@Vvqz}8C*o%qw1UsZY_npK!^0T6dub2Gyr8f819e}2te0|t{ zp)LCHg7acwJ+4clzV4gqbb%TT2OGkky}Ss^$3+UuKB8RN>UkzzDinA4%Y3w84K)em z%-~8hZZkEhN2kZd=xdBDL6w(fB@gXx|8xsUB!bwz2F1c{O=I^KA>@w%g-9Tw5Fv>I zx+!R6#<@N#$@wGIE0czp4Gl4NC-b1a@W~-B`2)M@8?o?8A9kp%#Sh4`8b8j4BBxPeA-s3jc;xVx?>sMx znjFW#eJ8H=b>piH(O*fITr}x-Mv$~3@V$7JvU=A}CYzF7V#4BF>Re|Z=vUbldX8OC zvFmM4F8Djmt0z)td3I5ShmXvLvK8KhFGQ>>U{+ctss-VWRV)(gN51+y50^WB0||uy z2YJ)37B6hmkg;bDKgxQ7Iy=Lun;GabA1MQ~?3b)(mTBaD`00Ddt*ESmKGdX}t=bez z2oOQw-YVC)x9dgD3K5a0b1Wh?L)k2MZ|GR7%qv-un@wGjMJJw-{Umt`A$~P+CZjv%Ezp(kbm*Z#L=Uzo~qm??Y~#+sij(ef2(-l zdLf6x5Ox)DcDD?qcq>DwWpwClA*PVuc|&Y3X2)x|h3)$%K}=j59nccE-F_+)|5Re7 zzNI{!PXlE(bYJ}|GdQ@KH{-mP#%Ps6|C3ep4gE(y;G*>&#v7=r1Y`FSemCNj5dakA z@8`S$;n#@Yx$3$Co~nQL&d9i_C$PgGLA=4Yu^E5%)koOUUbj=TJP<I(}yjC7B(d11!zP9^wrJ_0>-G@n$=lW}fZT{#I zRMLA}#7AQ{YTMJ{Lv#byn=uY{D`u!U$_m;g>B)HY_RA6sFmljS0Of0Aq4UsM0A7W% z`z&gDSUwd}6toa3vCeW_^j2<$?;zKEaWuI*49kF^e~I+$X5081H-R<5hrNC}#6=*( z_}i2PN})a`Qxv=C-4n~MH0}oKmOA3T?i|ygJ+l{~Jna$7HWJkLsSoV=cxBPn_=xeL zo}B~wX${6B0a2?wH@Zm4V{F$ZP>&DX8PqU{g2i`4Qone#k>loZQSu}Dsq;s3X&1#P zY6sf{^$JMqRAcrKS*-56dzH) z`+-ZJs`y8u{3 zd?^}ng+AHMoPMcf80n$EUCA6|f3Y6o-t`(5xid}G6?6;T?G8h+C(`-ltFz88mD3*_ z3O&8jx}hyqq70hYYkhdWx0JFLQLA+#*q|d=3gpb}4fEORA$#9w06 z-w4h}{}U=Rczx;MDrGalRHi$nny4LcMkpQKqHVHLRG895 z_cG@f`>WmWHUznfuZo}2;U68;nT8P@hy$MHQM%XrmpeJpULR*UEyYYyn^mv$FA-0M zut~l`L<~1nba4A~uT+z*RmBvj-es(JLt9eAiRvj(K|H*#4_er$63fnQ16IHtCm&0G z#5@{YRP^)K9E$WCd~CT$|1gu7`~?3XHv3#TkeA1A>}po|S(R~!6Z4V`bGNtK@&=!^ z>>5P0=k$~_r@F?o+b7NChm6xRbdK3-#I&}`dic`nr}A!XL-3EMhwgB%7iKf0?0SO! z#rohAre_o93UFw=MeggRu+x5I2QNa`9_?vc)fP9^nO%MA1;ct_8#`*3}9d28Q#7o44^Y^4$5S z`|jDj3j5+gVQ#UP&ioTUrVdZoeF z(_vKNl-@b^`PjCPHeK$0F>&P$H@e{^w|-b1Z}Lc&aZKy_mxv1H{_08Rp zWI=aOSSq-qpYEi=Cg=+jKoyo3;RrP`{X`1TIQn#;UFQsEp%hAUBQW zQ9xF;I-ve9AfmFRa?Ia2#4Z26^t=>PTN-7lQV10yyV&KGqkULTLa*KD5nnDQza$#x zqxc_1qn6 zyT_1!>@P?){yI>-_M`T3x!HB7nk4$R=kAU?cgO*~m==Z4as01T`r}~$9aQX2WbCnG zHBf6Hqqvuw;L5=_S?-P~o2Y9a4L)s8uH!?SOu6Xgd1cf0KqDoLCGXc0S5L7_nYT<< zzFfBctRJFF`>jXZKgKNI;=P|j4l#7iVu;_GWi7cgD^V(x?u-l2D^pBSvK zS@9Ygfz~;6jhP6N98;lAQ;3+Zbm`y>|5^bsN)UvD-ZXi1=XBtgr`NIc&%LJq@Fswi zzfJRh!5NjDmey+)E7;`ZhK76Ofb>k4NMt!r5*?zgbIXW&e=MA&JWW^wr7JReH8(}e z#tg4uLlR|!$clJG|8RXsy1Ka>w2?o&DE=Wa=fUX%`X4Kr;)lnmmRqhx-EJpnVi>Oe zNGo0aiq%;3Y57GAal5gE>026|iu9k;M`;szWoze8XgdlASi0QL?ltTk9`U9)^C*Xq zU?3qW5t|IgcIWDT+IgTSw1cYDJoQ{*etNlnuW}_^X2g!;AmNhsTob#WZydQj9j#j< zP>&EZ`Lx6E9Yj(TcALxanjRCHjAS@}<04J?hsTSBDA}Baz3}Ojf*_+`J{NK6(G`^d zlHb-x9k4!9d84QYmD>Z5^E=Qeum40qvPc-OI97;_1O#_KeTWoy+zH4*ZBqTIBbe|qOcQ~x$D2b z6E|EqaCmpB`~f(*APGbc!pk#m?W!x%(~|cjFFt>jtoF<4`m*9gcd~LkgsC(;b!hj- zL=u-4q>4NX9%A3k@!Fn$fX19peID}%L%yDzP8PcvtU;v9CNVV?DPZp_bpN%u_C4$k zQ>Kr1=JCHD$D|;eU<`0nVtU2x z@JQ_jct5T}bj+XeXG*=kfcb%N?{RsAcHmxD@zRkb#7k4SDf@haMWGJEdfP7gvEATHLJDnFgfWI6+5Fc}G<6CuigP7u z)Taxqz0Btm?)YVxuRj^atp0*mC(0&y?8<0>uY5llt#VH}`(#(>6=j-LRr0#(kyb+n zI;*QZ%s`~ugZ?Oz*Z@+6x>s-SU9v5fVI3`M8;pN}?xyJ6j*K|t#)Z=i@DzZ~udySgA zEJad5XUm8_3w^F^N$c}w-*!TgN=w4*LJ@7>z_Fa=PNQaYoL_S0uF?maqj!<=gA~b6 zmZ@^)P*i(@6VLhr(R$iO^K0FbNd@7$qBz!*(Zq?alN)ZXkpfc$#FgqpZGOIJf?Xh! z6XXUVsP3OV*x-0EVge%`>z0vpaf&A_k(}HveReTV+o_4|2K~1&nyIxnSo2%~?;Ju2 z%#3nT9t3o=bhiu=fII>GOWpQA-(CX1Y#1^l4#}NN{5oksHmX3tns;uO{Y2Z_YCn(O8Iyy#~B6bG10^hQ*dA6QJ@Z-2OzH;oj9h=&hGO z*O`hw-OJSU+N>`LAwI5IUXLT^h#MgZ2peg&v%wIA=ODIZM_7!Hw~(LEJt~r-e#REY zzrD~SY6aL}4QYO}_~62f1gcVL0JHvpRN@#vA2VhfZCq+ECc_3$w)7P=swosAxtrB5 z{5y&E#C{WuzuuSgjRVM!6+gcB;|+M)kch<^>>?-$rONoBAAtsVn_ zhX2Jp0K38eix~N*lksbd{Qqx&mjCy|fhO~IJT!9MChIjy4O|QL3S)9D&1yyO$z2M) z%nZZvtgEYJ6E$?(oVaHwW@ydM;tf0_rNCy zLQ|@=4}XY}?+(ptLOfZJDL)TNBSbrWx@;%`5JXpiZoA<_t-HQv^Z9ZQ!0lzVwEw_L z{Pk~O?d?8kbWwa4i*E4n--jqT@DQ74SHao;dcRWh&>#` zh3-)Zhf#&#LGr~}@6EW9pU>P`zh18B;$j1Y*yJ~<1)sQW^dz|2=yWBhP=`kYbG#-- z+VD&J4JE@~na3Th^dE~@4c6z0#=f`|{e|~Ke+H7_AFViO#AmI+YgjpYH$0#|wV$le z8_>2o#oap_-(u&Y3+Q}7m6fC7z%UeoBd$`JbeWhH*;cTr+w@iZ-EjgA6a>QqKZp*{6VR>H#vF6s53d4%4vEj zcJTjT@4cg%+`4{IX(FH^A|N15lwJe`q@$=k#$9sZ#M^vRRwnQOK+*Y7tcgb{>>57QU7 zYW0G(03g->l-|fZbE4_50E9n*^3J9Jh2XUk!rWyGxufjR*=-0dx7P7K6iWNi3!vSw z?eveX=U?R~K`Pv}>m5nIH$!olzK~!+EK8Htd_`AyG@Bf?E>x)N;d3*a>7Qq!|N3Mq zNFCfU^5!>7SrSe|hDu6*Kk#n}|5k}Vajw6O?%#0V-(KQh9{jgT{8ov7OW?Ok{F2uE z_7cBU;{Pp`7@FF2|9N}qn|6#MpMgR0`r|vIhgM`7lLOHy+#bWw`b}!TV>+#v2IsQ|#AP#@x4IXu$8|#+VtsgE%L;>V#6W&`!Q3A9O z&9zP!tn~7V?vxlfTA+>R%pH9fr=!QU#=UX;Wt*D&J>DUf6~A9Z3VsbDGx?Yj&%JSi zm8;s_y0uC&->Nky>P1|-2#w+np8$(HXqS=D9|gLQNI#wt5!55T>^GA=`3V1CBtGse z#mUC;$<4B+mN%3fXDCZ7s1FyH$UFarn_G@unjapFmA|O9j6;C8w}Q{(N#Cnk#o>7}-L0{+bKL z)pvS@y?K21hdxlq(9agEeXxx%TahzL+tVE$9Im$+Ct2%BdQ1 zj}jz)rA-OV9=FgUCf!B1mD8jW16ZYaVSOcqI%WwK)4A3YQIoA!&>5D23YYi*y0bEe zKH0IeOw+?&`ZKy(LaM8?yup-dB3n3`(<8>@D92LY!Lmvcq$a%e-Jy%5{E-*bW)%$( zYGL5}pRsoy(yL{^K6)3B$IBD!8Q1PAr`?G71Uaa{`i@ttd{2}VB0kTSmntJ)-xuRA4gmCok$WV*09{lp5+J&J> z-CNwS>S(h$O&!`Tpz*hkGs)LM7Sgv_`2_@CEW2Lon<`Qyfx1n49@cE}V=<|plhBL5 zZIb^K1pZ|Lf76i+7ZD!y;}2T0yBf+4N8&^d(<|SLFfv;|RMT#yTQ`d|3Di)H=r|z- zQ}q5pbz09X_FG~ykoO~h`KVtGy!U_op+v$4VM2)BG2U*8usM+)C@ahpAnnQu*_aI| zsOL?+n8^$4coF*G>|w4loeK1}H)~B2zMaqW*VkTGcCaP@MXAs}wA`Bx`aLP^6cmDz z+ddug_htW^0vTo@#c69Q-u@cN!hdhAen!H&^(QvHypEk5)t3}Va@fEG&wXzqR>9FS z>8q%PBh(T}|ols^rO0dRzR5(W@VT`2d5Y-epN`lYv$K zSLO?DNQD3bWQXlxU2QnO8-g0IQR|)RSJp+Kne%6x@UQy~@8=5+Z+Kq_+E!E{3rZur zrXDJf=v_47Mg-Fvql*J800^EN2%S3mvPGcGb?VRp;H|x#<1-B~x=ZHJG;U-dd z^a@2B@^ZU6sSr`F-OPuWYalInKEHRjOlif?q_{3_)o<_KFjYVFb;kH6d+nXm@3b6z z6)3BHHT|%FvoRSv!g&r!Sz3cCNRywq_R;sF`{$;els_(<^TL1pR(R6LJp{gN|{=s)OJ( zP|9K;{?hn3V%+BL^N7hel=ztXi%G{h__OW$E)1`1gO3+~amzHlk^OBjiiC>d#`>u6 zYu5OO2TA(hZTDBNT??*sj}*6Bs8(j58@OEvy_&p?jxE?VzWB;TA77hiHOx;ZQ|bd9 z9;qsC_bV!*l)yhevNM1tu`%NO(A05{>eY;twYLGGJ}_0f7UFKhl&H_6JJDA2>ezt= zDLo02%f9y=MUQ6Cf!n3p8ZX5%RqvRZrVsl!S$aWdK4h)9R|jvuBC0lb@~X$?<=G}n zS-ceTU)ahbJn}BdCdJWMpSgStp7tIWyB*hMj%^A-PbnsSzbz5Kr!6zvP#iw7#Nf3& z`7-dz&XXa=>lW1^P=w;#D}fnQ-&R&~sJyR`mM(qi#`Ht?Ho)%_IiG#NzkUSc3y>~a zdmhtGf!o6+;omCkie7&77_##~tYiiF;y7~=e^g|m)Rj%{-{%w+@;4krxaF@gMBSWR z$lYkR&=k5{_dSOcSF8i`!LM)`yqDr*Ei0Sz9~WVJ>v})NwsJk|>0Doz+TwN$ZLllB zY}u+cy6U|L-}9E}mcZ#)bmeMoE|X5n*v`dKl7-UNFnwXSJ|~)qhPA7e_7AQX$#Xrl zzfX?($~SZDK$;)~ti?#VbNz)s4PrLDCmMgTK~x)iryjq1e+S0{6X9RT?Z{6z*(vbv z(c(fr108mIuxf&_?L)JlM?yZ8f2Z~4U3nrl7O8@R;)Et?tQo(REeAdx;TLG2ygq@d z>wTZr%^=VtOgPUcO628Rc^URlVjx#tC%sNeNX~jo1LuVDKIdWm2BE&$?KEneEFr&D zv^FI~3t}M3^XP%6{Qz8ntdZXNh_7StKv~@@g)-r$vRZmcMK+wXJg^0jyRER_+P!vT z#QbguiiZ^UEC!$yJyuxS1|nGD>xD1mI&~>;T06@$J)d4l;9zHXS&K^UX)e0qgl!Hk z4x3n5Y0#?iS(a)}FY&@J1xz*D**y_|_#kmQQ&-J|9F=oeKW%#;z#&NI@@s!81S<_( za;f#MX<~ay`Q`5msNBrm>3$Nbjge9)`(-w*lw*jP`uulaV%D6e%=UCSHkP{APQ>Ws zj*9elZV%58%NcGXTT%l2Z)T@@cn*89-)8Tge}Zv5qbW|kQ@)>Ak#PUHclyu2f~G)U z3+Yi2>x@+uJpL~dm#3x(2V zF|~C&ov+b3?CesH>BOnIdi47(>lEAVZfi?CT5|BbYSgq#k**ob)|V+| zdugw{l?rXZQ?H~&Q$Dm9vPL83a=+r%Z=KP08_^T76}mc5A$f|mDahxwT=395o@D;O zR)VvdJhkRoplo&D7u+8}aCWd~<4w)6pMtdv3r)&3+~*+8_iOVJh+FIPT?%6hO?K$p zUS17l4ufZI$1FT^80RqFoak|Fn(+DQB)Q|aFJIJO^6h0d(k95wzt%3lWA##XM2}DI zGsz6(Ok#CsenRF+XAa9~zYAtB3+`3F*DOwOJDLB&ii6y0FoMfq%j=T)eFvJi%fWtc z#m7)BrS5hCCXBJw=_i`)@RU|YUM8g`2^@)aKB|*Pb)C!@^x#!R+ZJ^!chiTjAhbH< zFRyJ4cIKr`l$f4uh6|9RvG#K4qWMhM-Jo9ag^4>h^yP82{>p?P>TSHYl-bLG)GKC$ z-K-w&<#9}|og7j;c{Z&x#PZYg*hm@0^Lrj@7al3?ad>H&8d&ss;BB|YCne>U)4UHr zWdfCF8Jw4a{rBz2eSa_oEOTwE2W=)TWpztowL9)Z)noPGt;91-ttzyb4ClQUW8B$~ z)f>uc?>x7{kUeuqqhwOZZkXXe?I94ga<9Zxg32T9Nr%}VSZhLF4E8J}RestJst(a& z8|q5Mil;SL2rf_b@!CaieYfCP4Hl?e4gua;OeD9LRaao|UrVrU2jA(_7|z0-4eIFU$qh)R7IFlf75BCg1vYeJXS`E7+D% zp8ssRSBR*4vfNuv(sgxhQ=9ueM1ElLW~boO&`D|9qJ$Fv{!14y6~dhL#%G_0&Te}t zn3`C`Xx#I{*V{^$vJ}?=imI@-2!f_}oD4VAk(Xent87L`_03!%&nlzi-qzf#^4!^2 zCl3^PqipQn%)Jw{O|tp{ma^#TJ(d?+t=C+8pT+f`bo6^1Q74OxdXAy+M-h8nv$rE@ z4!G!3-+{Ndq1=vFDGW3twN?1>^&0NwafEt!kGDv2SalUGR^4Ys<4K)-h?r6+tU!0FfO}-caCAIYnTQh`asiIHbtGpfhc}->e19hBS zuf{mGZA4x1 z6l48jJRN7HooK&RC{4CLM}F#GSha2nvj}>>Qn_OLu&AD3bZbh8s+kr5=H)VuS`YoywDQ_ypF>;h)tfriDpA7W)s=e~&7*n4I_Qic5FS~YNWth~i_1~+M;*%uGa<)ANtqgZYGbko8Se51VszwWe$H#mI zKlQp2>FD?|wIUayi?M+7pMEkI8*{u>!{J4FufyY4c`CXi8y5N@*(tKc1C^`qxtS2o zRjUy&V}vcvS++M@1y{ZInqz3JMtLnh>B?gpAy^;RmT3C7nE4-lO=hb^(}qAJ^hln@ zo2?{jznB?=jY=S=&NX=s=EN(Mer9H~y(0Md1(8UK`Fh1_EsZ_@hesT3K?8U8(}aL+ z*@yME$?mtWFs3#+E>a%I?>HfvADcmJoc&Zf#X(?%%p$wF)^sgywuWLe1Z7QA703O( zrpHuYh-9V&8hTt>g)_BG-{ZD0Lu|lRnZEher#Q~tkJ%*oOH50I*Pi&u!dzmSJC7|+ zaaE?Rb5~H)^ggqWne+Xm&8b|6UTNZmt$WNGpqbC?EBNP`;NIk>C==ON3Lb`6=f1_z z)8;*A%NQ&5crw0#Lqs+e7yNPgk6yW4%}O|=4r2DzbM%J!*1h7!swfH+8J;hajpMC{ z`m99Wi188$Qqg1QGxzCW>}DN^uCdaJ)GeLS5eN(Q(+%$0Zcx&I`QrA~q+70s^s&nQ z%k?Kh1Z(h3frAD)Chh|_mQjw_6Rc8K%2{fvP9UI^)zEo?xV)$KgR9VBqT0wMx&_&Q zH|kN%GpZaLphGoQS8iUd?bA#?F<(*I8`B*tbuF_I)=Pzm(W{Px z=Z{p+7)PK^PNkquKJrssi=amhaEzMNYhlerA=rns3bJqOQZK!a?%^S>;lfvXnLE5( zLuI9XCO$T<=aS+?bzuYxWQl=UL{Z)!s}YRjb~5;JGFt_Ag>aoDiHuL-I?aVDr-Plb zC2H91kNI4c_|VwZ;ab@;ZiU|a6)^`Z41bXDcAke#ZM@O@*hvDNzrfF4Q_9pkm_GV010O+;O5Y%6^9=dkT1Qhy6-k*HlQ%PL$y5yb^?pQq$ zMm=EQ_a>vxUp8MEqr0}9XVSl<8qlbyw%p{iccO)tmCW_ds6gfHaO06Hy2^yXovX|% zkgIdIVi}~9^2aS-JRbfg3~sCXyvEPYtL=iW8+J2F0=2|mo^PS}Q*?hJZT(C)6tKK~ zPm7xlnKPpNXFeiXPm3h2JPX;F?=gyI^(-j0Lu<%F=lGgVUa4}g+iriMpVTrXY?KA| zaYSOvX|IjiM5+v*rQm1IXb`o(c*gf$5(~E^^wn>4=fRA3Ze5)#!(1)&(2`4{hm88` zWv4C$qnb>v%&+AWPk$n*FB+ufWmdn7cf=Y^eFu z9uPB+=R~bfjS|`MYvaS9?`zvy{VOrBVz}22=BCfox_NJ@w~t<}jbK?3w4IAG0T$VD z5~qd*jY|5d7Z2|2QB2OuLZrBD@xo0ks12w_pB3Q_I{`($E#cS=Zu5Uoly5EWVE?DW zSr*{ObHux#-5c2(@g zI(&Ijv~@-2O4^p=4;_*+Z!2JP(S!FO?2%vsdq;{vEWsEk=;rh!zHV+ru-QZlB2ULJFR6Y z36tTY3&&6k4>TmBPZ*K8?wUxxSs20Uw%qo^MK3$ML$DOrS6$d@>(QGXSldL(*^!=X zGxEt0vV2QiDD=&`Hh!WxDh7Ku{4IhyrlI==MSqlu_wKgPw55JtpkcX!9-HWLl|@ll;jTfhmN+*q{^K_$-wS^J zpoy)jl69_geiS5&mEj}MB3{m@H1OAlERL@Q^(V1K>w!I>g(}VrD2*nfa`^337Ix*^ zH1!P9dgScS9e(YU>NO@Y_V;Ec(~biBmO+Z!WEel#miRK5**cN{5!{t$BEu1sXlna1F8aPUZBs#!LNFh>ZbBfed@#;t%?v?HmhZq{zDnQp5-lXbyVgm8_GTRao;IM8Rmh5)^lJ%@A~ z!K;RPPqfE8S*Ahu7~-ESyosLPZ0!`t;u~d#w%b{dAQv3^Q%SviOdx}d*C)4o&bv;% zdA8EMx9I$3clZ8%_PsB$IUudOL+^GGR%GBrJTO8nXccVJdfaSv3th!veKh?#w;Uu= z`^F{cAOXmWoPQP%1o+mLaVRMPny(>N(hNtXH@a0F)C^-q1EOg9BbGB=oy!rA^{Zd+ z?Ld_=TNgNo8YJE1ip>&teIX6X!&Hd<9kOqQB42=42~S(!RcJGNZ#R@TZlnHq)%~szqgekt7I5+dn2=$&>KB(&>%qX z{#cG3=s{KcwiB6aN#6Up;MWq@+=uuD6m-)RWM@ozNDMNgIlFESKEzR&4+NC6*u{fJ z^Qt*O1bxqq4-~y)i$EzIU}q5~puFi#r5%bYYp_v}q6e~74M%M#a=c)$3l{bV*w{W5 zyg=Q0)~%akrR?QywWR`lAZ2<%Tc1Z|nYPnmC(0mhMi_s3E<1Yomire<6qe1DfyNk~ zYl60`QP|XSTBv?x8wbd*woL!O51g=T#SsGGs>F%57!ddmxYN z%DsaIrp?(3z}(XfR^8Lvv{uk&N0iyJD~0J0&gbb^Yt40puQUjAdtKExa>@=&1q{v8zbT?ZVElj`kSG9Zh(x zzMHzWQ0W1LXwdK(PFP1fwEYjgN_L3cmFk76h^KdcNcjOe54l=I2g%Ydq@f06qJE{-prM-kfYogBf(X2;O44_VODFv z>DT(T0c%N6(GdbA7iJGqTZ!n^Lz=pJa)GLR=!Z^QP+>B-1g=^Dk8tj=XI;Do>hCmG z8NFZ>XvqU`6|j=_E8R2)bL}6Y;H8*a6!SsPdFxNd5bYIUD6LD@AsEr+P5E{Tj*=kLD7e8@#OAMozDDe^weHa^BJ*z_$sP)_ z4PpetBpvDW0z3f9_xFhq2%{hWmydetjJt}D9O3b}ef=uX;NQn(|5dd7Uzg$kA-Q?j zkOsjXFAVC+y3bv37(&MHJ|V3pdnbMcOMEA0Vc~?;NWl%?*=Bi~*Sd9KBs_Kf?}Ff3p{7dKCDJfYL)p_CpZl8 z*y$DO$mQCt3xa8RPdY*!fyXO&m^9*^JNpxxUaL>h#6)cHPCqlb?t!}M zzHa2kvy%^xd4HG%Izo|Kt8Mnz8MiZ2e}zj0$Oy{v@# zP`Jb&HbKkF)RpUDDHjdd63g{#=mb@jN4jx}xC|h>hn3KBi930RqCa9QKTf}=w@9m5 zo0@$OvdK1ew;amyt2Xt-rm41J2aU$U>h||qhqWy}5~Kz)Dv7SvCF_xW-ohh)uHmYb z-2Vp0Nm>wxf99R&{@YEfy1I3 zfB=Be4akkDy4-0gzKbxal2XT!cAZ1LIth6VpiZn~hNT()dfb@y4uuV)etCnA3n|25lZ9a*-z z+s$G{c(5}PP?z54*6=kl3YjA3V4FElb`L5e-0kc_JfmBIYj?J`#0TjpHV2sekQWZHwf%y{rHUY>(#L^O{^4If1@(Xw*cVfH?b#&3!n5aRPf=Sh%k9*356`oY|$GV2Uv;{IhPeqVO%e^($zD$0Ji zX5Qvk_qZ?S5vBd6>uTUN0#;a8N+$%VBlEzv0f6=OAcWcpCCsSnO*6w>fd3$N0XI7)F4D zJUas$rj@qdeYo-b_x_Xn%!9=LDf8esB83{x#-73@NrEh)J_t|*!LoF}B}(6iZjq^E zJ22;{_KxMkTr$#HL;41tF8|uQ)|<_Fz1ixLlG|V!+P%ZaIxT|fph#NA=2@A#Cp#s#1jp6jd^n{TV#^n;EE%76u!Kbcx&eCgG`65QwL<`xI(8T=io?!nr##(GvXHo^tds)I^ z!(AMZ^TM{Mlwx~MPq>pX>b~XeqrANv9dPD0YjoJJuQ?G5bo8WfPHyg|BusHWA>OKO zI_^bM5^wpan1QKDl@R~4AvRRgs?r^QMVlu&y1K2U%q5mfZk@dI(mg4r6sWzC(+PK( z7@IXh?-@9Miq2{Pcn9|<&Ttb#M!fs$ukAq!c@x8miOWb?nw_up3^_|71Rio!yBV1h zIf@JU-p79L-Q&?pLyXSe5ixw)?v&;$-UCYx1BwbIJMFkB22@5KS0Tv-dN?_Hycgm*scS}p}VfAJOS)xF4h>vedzuylVRde#BgVe9wNI&jV zb4x0LBFm@=QKOhAH1jU)hs;bk?h!#5$TBzG4o6&65uDWL)%k`UJ(@ilS*9-8`5d_N zl=|ZX?2uVe*4hB)%5%NyX;MM-L1YEHp<}DtWNRI)%UVUcgBW(X7N1R;# zzamFK?^2>7&><5o*3YwctMQO?UiY(yeT^HAn03Yl8VY84&_UqXgaTbDO4Jve{gP6u zF1uXa7iMry%>C&ASab?lUAw`Qnx;QBLOZm_TP*BPo`clxPZhx31LVf!4dtIq0=PP( z^I49~f!^CG6s}D#NOPlcU1(!Xvl^9?10|2F5pJDc>R_IHNlwftzB**c#u&er9dqqx zs=5h2lPAEE5*mM9ruXA@;un;$DxXPsaxWmfyw39B9U{d&k&g>ynvccjk92R>lb>C)jI%F3le`x1N{V~T zl<5Aeq$&U!!JVp)<@F91tnP6?q|&!>vEY8Rfg5`QJr@;g3|#tJ~29tjr)Yshs_-*?&M5Vv*p?#i07~`q8QIz$#6A@I;V7&pg)`-MZCf zv1Lq4qKn7tjlTV1mvWx-@fCrFp$@rkCmZVYFGip`?qTmRK=x*8T$#VuE=eHFOqjG( zh0n;CRC-G?L$JB+YukMBejd3m<)N3C!c$1!uY`jW0r#=6P7BzD_Fx9iLU^^gVH!D~75;Ov_t(A+ATm;1+Hy_znG}ovW>O3m z|H-7_b6WJecQ0;kDAVUNAqHI(zq}mgFjUI_f_;R3=&Mr2Vl#X)x_P5<)OOvc2cX=7 zc9-#?u6xfLOAyc$;1MnRez@8c*PZI9)S^H&JuZHsl%daLDK|fE)`|X9Axm2!lLSWkDNNt&y|4deG=4mmR&^;h(F-5>-iUlYAhKzV9IzeT%#9Y$&8*daY%+y%zFh zTA!Y~!1ETUYWQR-hHikrNR%)KPYD*sr}-uq_6-aWjOsgOtY5ZLwM;XKGJe|)klgiq z>a_Q%U%Xkrf#p(lp>NfVe3UVKHS$~JRfZ25p>t%|(x}kxa&|K=Z(jdh?B zyv1+Q^UmQf&-c&>`{{<}jI;OiX*Yzru`n}amTofD=0b_nCY%+yRBdbVsWT4TJP$r87l75Z0i$oM;G%p z*rhXx`}tl>J=Jq5)c6A8Yj&}bsX)TOp8eUdrcU93_m|4g!JkYw*!rU%iHODynTk9m z=pWg>dptbX;>v0^*<%wUeB`KU^5za9c(gnsjf>6h)h7;e6!VWIzJE9u;A_-@;YpLA zSd`X5*LQTz``D_BWVStHrRjI?9z|^n+4}Jy-DcR}(nLO?qyQ$O%tjjeD`*k?C~)w$ z---*v`?Qj6Yc}%PwB}+dH*D#Gidix_%3H%tcheg|{np8^62k5$>Vhu9R2BsP?74gX z!|nMw1y{X>5#$YA983)V>dfLDyEpQCR~!8O-^_`~R%orBG-r#&aY`8|kLZVf z?KJ(MP}Z=)jEvZ1vW2gDGdz|{QVg>U+5X%ztNWu^rO!?GN39U?K4b59Di;sL;uzX0POY274{qlN3 z;?cbFLjmeOK{6H|SLi3By;QZH@gz$!a6Gh+r)L-IRK_L1tAR0Ab8bW4ZQb5TKVQ zEt4=-gs+oB7D3Cg;X~h2_6m*kM~FOZgBvtW=}Kdt%HB)BHGZKm}$>NVFtc@Kt7Sw3Ps5-qMLkEuarC3dzAL{QMsgL@aCp<(&k#oYnfCd z9&9=_cr?0eEA8TalNXI2n$Uw}{#6+wcDFQq@S7np7Gk!?v*NQRj5O25-Z{6}_cVXv z<9alGl?zpT*gnw8AjHcAy?5PiEMq!H=^CK3T!BGw4Df$cmFNX8KF+h}V3q!<((cT@hm>JN0T zY%O()w$-RnvIq)|2N}3X{Tu?IkzRCo_iOsy9ncbuukwEcM=poqr0MS=s2;)^|^!Am63Nej<0Qfk=>F3tt+ zv)2=vf1D=&PEQ_0;$da{o%tLEc@QTe@RakJ#*Bt&&Y7$YVwzjZ-72|} z=E7lIo>3ZnimV)8tBX}wtBDHm-D%4$8}kfliVlrnMElEbpyFpa3fH0GX&z?t8+G<- z58zCZSJM5L;jC2;&3Qc1|I~U_#DYB@tLqOs$^5SHDpiUp@bE*s8a$f+R#1Z z$htBxEuG@{;r7|H=Z?`TZhoJRaU*Qy)QZ}9*VOwz7znYbSxPBs81)(aY(TjdBAkBZ z@|cX>_F_r>+%foW-uO~a^gxNI5GJ#Doj8#%`}wwh(eA=hyg1Q$Q-d%zx;}d%fZ*fP zzqTsFT%5kSTIpiAA{*9_YS8e;?$I%P%nBx8HfZrnzT9W)qWdyfvNE<~aE|Zv?9m!S z0p^aLy8%ym*vr;u^jJ@ZwnpDK-Pwwbcod$$CqBMZqO?L=JI0X#CgvJ<(P}p@QC6<%d=4t8C$PHbQ7^u!g#gXASPoK ziCzy$QuN{UU96XD@Txc1+8XDL+#c)L@CY}M2y39}OrO%A%@l z=VGAYPMFJrLUmbgZAoh`?1mUdcNss&D{@5ty3J%Va|1J@`J+DPAQ)Orer*4T zk5w1m{aE(1Ew7%)Yh|sP&t&8WdHFIV*$`rN)z7Cusb zu7D8qqT`jk}`=PZVN_s?oYUezr)KEEX!Rt|*ZqJ=zb!=2f zO}L+j`{ux2bb)OlWz0;Cp21bZ?%87jM21?fLVFEW!xMfxWb??tifW}s=W^k>wbf7W zMtFkr3t)<~AJZ3~I~@I7?v&1e*%?m^a&&<8?#_0H3fhiG(IT8=tK{r2!Q-I)7L*(u zv1paydiid4ce%_Z-N_738>jmf76BEz(aB@&qlV0$)>Mc+-?Y!?2oA$8Mn+$k zg?`qv8w=BCw>dZ(_IfE$F^!5QJA02plD;I4sKm{UDB-9_>o1CUIQ;;*NZ`boe<{+x z1oizhkQ1Y$hJkj9BRGVb&!F#+UyCrGYWqrBObiNI>_8LE<0Db+?nr4w=_WTX-FBT zo?Q||C{<{h-CuoD=d5mgl`wcz9|A{Cl#4DDIdF(8!itJv#LZ4Qiz`F@cvJC(m;rBU z`&m^582i%q3;ExS!Olg`b0YQo4AY^nnuNU)<{32kbvfHp-xEt)EHzv+)Na@h2GQ0I<%+}7XhXt#5xhoI$V6aTF(f7zFg zwz9HGd!71B0o+L0Z-Op7oSTvTW%FEtTODJ^Hm)+c$Yy;)?*xLE<}L3|4RiRTby(dZ zRKYx>BEZGarbcyG!s}94Dm@!ht^bYw9p?NZn7{gP%S34f<=QB_5rcg5q(zvo-tdd@ z=N@V`lxuL)KGu_d{sEh&!{wXPJnON_^2`dx{>17GQIEwEy?kFhYu} zT_5K5U69yIZ+2L6;SCWi-qy{rd#zBZ3(i$N@U%_%UZd*TVq-L&;`&M)B~iWXLlt;g zQrs+)Fm1}0!dr@72G&>R2cPL5g$v&;+JR4+$5*NVUH2c{RvF9VPD1NFfcI998me4+ zy|B_+yg)_iApL=Vb&~;AJmk-ry4;e!xKUBRjIr*d+7LFX6!1QudAYpwj`yyZEUa!d zz&fn_OE_iGjHlIb-h`k_>x;*89v!L9vjjnv`Iz}3*69Aq`m)fkN_)=B?=iJLW}6>P zxdpKi)QBEm?OOySI(nCmtCnLgwrO=>I+Go;C$4xwOyT%rfs?eiQ>k?=PXDJnJrYDm z0(#Vh=#u9cDW^FuhKyr4PI|ZJ>sO+mDQ;rEC>_fn&fTW>lg!RQ+A7zMmQXf$iCt1_ zsui;|*{qE_wKyEC-&mWg+Q%G&NvUGa0#Y*jn%FkO6>L_Q!|jV(jyvVIYm8ysuq0Xz zr^v94mv7$6@bew5TU<}u`5f%h`pnPbozI>HZHU@vl#;1J0B7pb>$p=_{G=6O8bK>D zCr#)W?Pbr3?DVuP#*8k!UNwJWpZ;SrSGXMSx%v<1S-u_rxJmg$dz^#XvC`?L=S(GNCKBm; z^S@%!z7-i7fchK+SmF zPom4-_j@ih^6)o~%ofNX6F;{tOHSi4{T?qPb?9m&Tqt-T%(P9)%x0 z!$G~7vd3Dzx0>Sq^wXTb-&ou$P51-9Rolhw8tbOxtJrW+TBEPMDB8x@Z9k<2YNfrN zewS`c8^^Hq1WCvYR}lYGjhle=e|gGHikVtT#@_1{U1#NX5wp3Aak3wpTTovM>F> zKhdXW=yb{F$}T>5-h8hjs_FTra?|!bT7=I-m~qC=4VTvFm@l=3P2sJg!{Ux6%Xyf0 zUdQ2hgFg0k86WrdOhrBKk)O{RxI(wmB*Ggsoidm)Y`+Aq!(ylv0MR^uP` zr>(DIc#DqgsiYba5S{$qZ%f*cc0y;m7TR=hgycTajzw1ci%7i<25Jc{a#! zyY1>84{-{BDP;Zd`1D9+j9HU~I%!ml+t|ISZSzMHCiWVp)UR=qyYRE(WMZv3oHvF% zb3ewN|d@v1*di(rOio%^_|cyvS|lQGqaUS9(qTg@9y=&Sg- z^Q5BKqY9nW^nLg1Js-1}^q$QJUXRmOSGua#LdQ22B50qdGGG)OMHeKa;)xHOuO83! zh;h54T8lbJ4n3^n6MRFHQv+3=cZrh&`PRY!Qem7M61M=evWxC5)ot|;cT~{^qOIf$k z*t1`1e9x)^Pi)((eEi6PHLlcq7k4(gNCc)a4v*cnaM_7X`ZBn}J|xBMr+7BJZjH!1 z)>Php3@$ozjKD2pzYQ8)`aa#sy3)7g;xrwcA#rM|jb(>2xO91UceE|i$Js-zA_MC8 z{mek!RwZGqL3Dve^J#v)Du+JN>*nTSr>tGjR+Op-`pMdvMtJ9J)22+XQpPkgIZ!q# zNw2`{EQfvNtoBW3kf3)sPrZ0AnCpRgcqtVMadL24+CHb1Vd~m3w}=f-*(02Rpml41 z@z%Q(lrT*hALz|ck?EM z;(Z?)r`4DYuRko|J&tC7yqR(ZGcA1OLuBHUu``e0y8Skj%j#W~*7h&!TAbrUKiT-i zVx1K44;5XYn6$aL)}Sz;M+5I|va#Bd7*|r^D*6^}v1^55ypXS!6RLE}=tCtVxuXq7D%8bb`2+_kIm#lX%$x?giI~76e@(M zjQx#of~iH^Knx66$uio<1eW408Z|};)~xyIKXotgNYGCpx-Ti^zF(jhVUEa~pmA9t zccB;uIMrSK1kQs085MKsPC+!I?6OrEAW1!Sk4SBed=q*~&gW4hA|QIf|4f@s@!bV^ z(@S3(^!~-EAOyNTDzK#kF6ewh?>}w};zY}7FiQU7=w~PeYVxwGvPra0zCHt_+&jE2 z=9jzvaT7$8NX+G0J!KOO3vhWwxwkF}G~eUf?ypb#h#Z{4O{@3V?cWq!{(tPIX$pcN zz=?+ieJXSAshuxWG+E*PkImViZ(s@D(E6vLv<4%PhBXOPW+CsNO1!_7OW@^%iFDRk z3DO{1ZNTu7a~`_?bm9BAYM}?RvL5}A2wto7CU~vtykA$9gmjV$3{WX?8fXDxH{^zi zG@0oBGs6eZ7qkonG&xXiZv`HwkPebGUL>&p6#rOsWiPN|%X3C$AHXb?K5$bP{a^B9 za5+q#gaqofE^K4~7R3(Sv?Bk`KNA6PQ%E{E(w5(OSttY(flGqt8rHq|tCUXhX#%B5 z_iNSL7Zb~GG5tR(rm~#ELIwNMW*+m}wLV(6sg4sRva&5{vAAD!VqXhipP9zb(zI4r zH*m+upJT7U*IkmAzx=52qP~gZ6v5Id+R)c`K7Y2jwrbsbyjazgSFWD8_4!7Gol?3F zu6Zqn$Jc>1T9uG;Q#3E5zM-QU9k4nW0u+R*hDUV%srhP2S-KfbPRhBK$wR)}P>YkI zH=xGPW;)^x6f`tLU#vL_bfuo$!NI{iWxkBo4ckt$^0Q?|!SvnTek(XOR9I@XAeAcj zpjIk#@&?so{4^^TwnxJRiw#a!C5h6Gw7v`-a;%go%3?Pt7J_w9dCMLLMg)&wb*eJx zU!LiFI<}g+=)|$DJdK+ZvOa%^DW7_EJ}4c7S&Y+6Kg({?$F@+l679TKyMYp*LcovJ zJa3>zw9X8c4dEd}gX3)BwHN0$hbbo2t{pT}5>jm;=LWnZwRM_@xq~Lo$f@qVp1QKa zmuX!VQ($l9?!#8)-}^9(ihFnt8WR&e&7>ZRL;OaLAq)*%%1xw) zXd=BszcK-1D=1i)Y|}dI>)UD0AvZS%Inic5P%s;Nq-Lg+nad7RHOua!nc^e5a`Qt~ zl8ip`pr<-^nH$iTZ#um;OOfPbfM8c>;(8S_@@{e+Fndl&4On~6l@^^gmIP|Vij9Nb zhHoAVpkg2JM@zsT{cIQ17PEs0z&hYagOQb7+h58Tf8PHK%`rrTbg|l(f~&cKvKf7k zpq=o%d;j!qf8PI$DDb+N8gYh_qo5V0uVKpXhy3RP{g&i!o&0S$fBPck-!AC4pZpzh z{*Dp9WB2a_OEs=v8W6tkYq|&CN~xYq&0|r?6=O%nbQw zM*XgcW_5KvEXH@aadG;?f-^eJBV-3(%lo+PHA7L&ob`z=P)a_fjnr&mfz(6C=*G&1 z_8{{qjzI(ENMxu(*^pvenshOv7Jli8$!8Hc1yTF=TaSb<$!Y&u;sJ^GyLHll+MRUg zk+u30`lclp9*df>S0xG4l#jT&-D0)1FIm$Yd*asV_=htIR7I^5_4Fpu|F@?D?M z{ybMy^zJPjJ}7OrJSQhB`+0wZIE2fb$mP>KP-;+qaEH9Rk9~iK_(u$lRL^sq1yj9r z%>t5AQs=Jnzh8&;`0)^K43clyb+-F^mzdz{+Q33)@@QaL+4{RKo|KTaKBIa@ozCZP zkiV9;z`H3YQf%*R+xloIEq`km3))$T81imAUb|E>UzWzvp*W7ZK`7yTTn7KptOJ{gu%hs>VG-`&bOJOR;UX$X&a`SwC4w9p09CyZpPm2;i z#e9~$`!d8R3B$N!(c7o5&@6mPn9$X)(}?!)H?V)q149^G?OCm zSN}~l?AWRMwV))rrr7h-h-9twkIa-q6z|eJc;23(?0igYptml4#y=`t|FQ^39oT{H zva4+!2d}14@T;BtDONi!PM9f8X`ab>Sdn2o%CVY2+goE(!t-|!{;wZkkRXRLj6mw+pYYE-tWLwuCM3`Xon8eoJ7tAS zmrg}{qTf2V7T#4+Z7TSVMw^YKh`LNk&-)oX>rFi5c95EntP4K+S9T(`8`_d3SOr92 zj!$z3d96+$>IozG@XmDKJJUEEwSs~|Z{5~uYf+d8ote#ng$&XnXEd(UyyCv((=co5 z15sI{K%EfN-N`B-Su}%phm}&g?%bWY<7W(~~^Y8NJ|LrPpjR-laxPOo1^IH!#=CJX- zH21FtV=w+kdv5{_b^HH~-zuqWl|r)Atx{x5_GOex3qvWghwRyx!C**I2}Q^#$;c{HpUpt_W!uQ-{0@|+|~X3&+|Xe`JZRWIh@1!_{?>^uj{>Duh;cX zXBf=`1--nb+Nw(l*?twqeV|z?SkJ-Pxe#IFr}QKaymfhV08(e< z1l@zlUXuX-q-Oe$0Tth~ZYZq`-@QN__eSy+9Rz?81l;P+b-~i&ef#nTJ_p?R3Zv^Z>!p&T{(OGYfyul;jLH|~cork6VUmj-9s~qtSR-$~6 z6UKW5=pI4KW?O7VL&8m6&8u?^yyzC1aEaXdpKDg)Cjdr?X55Rk32*ki7?rhWrK_ct zcGhaMwd@VYER|LJ60F%-s>UKo}xEExXh4cZj;02zfWS>PM^RN_iI{q)+GKUBCp$qAX=!QQIGhlJY7gS(V}6gYsgs`26$V-#?qEk;6}vIs(sj0W z_t(+IIZf`eKRb`mYrq7e&KB9s>NJN0c(c#CmFX%mQ%hbl&I$%>zP6fosf^nCFsJCh z2cvj?!PU<+re#^$h4OJS-%E^&ot@lMG3IdAyM5nyGzt;1T<2jKP-7BWoODtRihd^} z!{5-$hBbl~OaI`c!{}c=A&NoU4FJy0ZGGfkumw`&2ha;b1HrfdR# zj4Q|j=GRXPU2W%l+VIpvk5ZF}h)`t?@CFBtw7d7L*oD_sEsR|HK}9bDl~~s?cWjh? zBhU{rLQpW;e+7Ek)NKB3^idDcd?IopqTn$DU>ym$5+fj+E&`yTU|y7$rK>gOn_Kyn0?fxv3xKz&K2kW+sgWlJ9HGCv;kL*WcH!1$ zmdcsgG}5xJ)%{?mqJVhic)UqOXCXj1)krO_TO)47=vT_>Ao)7o0w@Kn~fg&xT(<-p>#E(25THE#<65RD4l%20e<3)5&#*I(+YB1 z*k5O{q;05Ql3Q6P= zs%YWp^fsY{&!U!MVWZLI=}K>?)mq5km&f)L+rY-G5jEqdv&36TyA zpIoGNEk?elE6yC$^Eng5qaQQymI0at$dn!tq3*qH(1xRs&V6p%GmD68BMzPJRaUnl zZx6{WcQHPRrmhu6-)L4@+yYR{mIKEV$Ush{m!vww4T`gvV*eowdT^PAh5Y0^VI$(+ zzP$8`X#;enRP~8vWp(4PCOX^zO08NEDL+b1L|rtOSqa(h8LM!gYBWcDcco4BZU~F` z6I++mo8-W}GVFQHx1K(TjJc;PK+lTbwNQS5+E0A14u00cna$3opPgQEb=S6c0SE$JCLrM53n3Pf7; zYB1_jFPX1j*Git> z>>cfgUzmp&>g(N_s*5CF28gOEx?Y#N< zjDC1XK>bG7eoJ*ydBWV#2>$cgQEyU*ZrACR5EU25Y8xo#K%PypnsIq;o55amqnojp zCY`Lf{*|q*po%`jSU;)g8}1LiV^<5ymT4BiOL$2TfZT zLg&k*xyKz7wKJR%)JYLmSESpuQP1}b7v+)`D5FVBeiEc!Znsjf7X!c>57yBZ(z^Tb zycOHEk{YdBE(U);JI{#(bg5|~CGdXe))UacsC7ovIsO) zeY}?rUVS#wOAFHZE~sF&ud-<0h?@$3vi}K(h3mGf~*j$T_4^}98ZEHWT55D&GeN( z7|_WP8I5nU?&7}!lXKngWeI^Q&BS&lUz%+n|0@7aXAB6(S|w8gJS^rn2buF6_Vj>$ znZR|VZn1mV)(}_(ZC5lAp}!8WRkML&JGdSpJxz~=9C*xY@2*B)6+~s zsVN34Y{$*Of+@>EMD7!!UIEivUJY(5!W0ob(&?9f57PDwoCDl|O8;_`YXz|I)hYeq zJKl9x2%HN|Y7J3Yx(eUODi(2UoR6>=YDUQ{iUlc~FUk9-9m(O)^JH7O!eU0cyW z(e^k>jF`MRPqpqg2lXnP(*DY37<^(cE~&USIhS@XL`n`}N-GXI=e!_!b{!##GKx$pZA!P=f=086Df zt0-Agd`A;5AanaVP$A)GjNdESAEU87C$8T5>GAe{J-^GFB_d4wx5_rttwZ_ya{Er@ zUdUh!@(bs>i1f;;)@9MXC@~UHBgkmY2gxjYfy4B3NO|4}efi;(`c^@- zdvCl@;ql^kD*y)3AoR1x0k}t_+kr$em0odz^8|Y7PDbErco`bObhEYW+Y-6)j$Ryu zAW&58!7g3%&zo+f3(-ZVGkPrCGYbdqKDqsP}DHoun50*Ar? zPn$j4nO_uLoNmhPL0HjyCXwD1GvcS?`{-cU_$_YB+orlf<3I>L8LU#_3M5o>%Ib%; z){N3Xs-uUDz%ig+aUvmlp_p}jg>l7}5Oh`YsTO)jt4U~(j5Z@k3_YHR& zRobZT@p%Et~VJ?FR$bWQ$S!0{F+FRJfvucmqQ z?^?hV9=U^p_S_!ta0?7_VGrp8GjA#}8zRp-i$%3wsG%4|ZV}Rf z^W~!zWPbJfe2zSbs*P))<^$8AQyTixtZ%xaxCh%jv(yvu)X8GmdPg8~j~eY8oD{}7 zvTkZyKcMyV3l7Fe4j$)11=vGed=@{-VvuK_);O#5I$@2Pj}FiCi|C_*>orHkv&3k! zuCkxpIBKXyT4|Su3-Jgw4UETGK?br|wy=V5(zSpX3F_crZZ64#LN0Wi>yQ+p2K#ir zjqmVh!<_TeW1&6N#+IoqnWr&AUNc_FZs*}m)ictLGA-P--Y1du^+1;g?tC~OUCTsw2Buj zKFHh0AC+Eud&o!?4`b5FF^2vf0{Xcu3b==Hz;>>D>bLstUQ-((43Jr07<-@ZLHkB} ztiir&g=YInMsMy*tYtM|h)nLmh5t~tA8@~J>X*gFu`IH?TiOD58`^D!n+S2~3u6Xc z#?}N-rQ3_>?=l&0ME;Qg7+wMvzFm*H>$cd>9H~;FSNt4>kaOo zgah)bX50e|JpN+UEHO6o+O8F%6?BY+49@K^ce!s0*__cWYnZ6AB+q3AyPeAzJH7lm zZG#j{lw)i7w0WX69KUn`^#W>AGXHiVM1?LZnv^YhzgO$5C6zo}xHw&xqr45Y1^D|e zGXr+n=MELBZv5_rYsnP~EIy)>3ee8Gdojkd2^$%~V>4O^^#TL;lxW7gic*rJmlKsU zmr?}C?Ov55Y>rRORz{84qBWjR&=vd^!=0x$R3l9zxdx46H#5-Xmn&Y2F2x5@snwGe z=L(lE!8aVhPG{ASy1` zMiYsCyoA2BF|67SS5^Fg8Vj&mL2d~4wg2}yZ^}!RDTWiSDsHEy)E8^Y&|M73!+Xx^ zemb*=R$)w6Oz7&YWzX^6)*0`tQn@8U>aK}phW?1cpGD7bu5tDE4E1x_wvm5o?2#s* zSES6V-Ybj&te?My#=P#3v=%&E3pRentrZXQ$rJrGK&9SPaG1 z^*N#z%8PVFoA0t>YCt|Rv}S^}k`QzARWR(1Qc$Ifx`5+zufG@9G|vD?)-%OElT-7& z`qD!T74-mnjc;Ov z4>DN6eN04u&`2Mqrjg-EL$erBBKt+k$VY|-VgmTp4ubFtQ~vMV{psQ+ZdLCCrx$ZgX+Vx9ZG_A2C&UadH~vzIVS9@jwJRs zB%!%?|znH2Ch%!%`PzIo%zU{~s-hTeIW1ly$q3>Y#Jw;%v0Fr1ko=|j$S%EdHp=G5Ybzz@S2W>| zm)8$Al=DHb5dlgH-`}Qthr5lHZ@*I6NiW;hq7>JkeD=Vvfg0J&a@@DaY$ccvWX4*c zf3q;a@s%>LSGI4k^ zs)cXU0G-5BTB+r5WKNyDK^NkOLmbV(YyHzy41a=|kH40nwxmX#?-=l2b10HHC|crN z?Kl3u5n<4&PM+#d!zu{IY#)oVxC?>-ob?js9AbYcAYZW;Jkd~?(wuyW>-A|Ukop8} zmx;-HyQYc#w+uXOlN;5mP|=g$KeLrQgBrxpW>o^*7VLC@hzoYi=t6D;NAOm1^lE;a z_T_b=m%r&~+*X{2+l=>1{Df%G1~G`*FalX-=Wdb|+W>MBIxemxHHb_Lb#HRMcKN&a z(q@PXYbQv>`)c69?+>aL_2kf?;2P)Ni2bg}9{s8lt}VpRRgx{0%`VOWXA$f(#*FI( zZpIMf`rbzoOx>ONA9n!|Ae<3E7m*v1tAN#bI!0`KuI_|U2FDkxk&x8hEf@rMA-AWG)a zct77oUWJ^atvK0->dG2|L{9c?bS9CWGNHu+Bf)Ga>A`(mvTt!E(rSlE^G80!Sa4dT zQx@Nb0;KtAtG24-?NI(ZsFh~(@mZLFDj1ux6-Irj79yj5N`|$k#Q_L+n*w)g2VxPD z+;S7jMtFJA^U)GzD*+E}=irZr)YBF2n>r%v7sp>2E-i~x67L@pnY#~KVDZu8cth|) zopl{1eypk_Z@O=Vn>H2Qvgkjq5Hr56-iAeM*mo8CW14T4n5uawWyzqtX52UDm*mhj zlj>(s+p@69cl=z<^h6sadKSNLGt+xQ$;;`T3q2L^KVv=qOPADxQ;QwE7$+qfgnPt< zn4XUIn^?}mre_!$^E_!A={3%%$rcwYv+TNR5cs8V34^M* zEeHBB#)|^VVaF>?>^oDVS$v$vk}oe@K+j)90aW9@(T$*i2TH2T=A*JUkFbM^L%h+O z!A6_uplD8yK6z&^zzduo91z){yy364IE?M@?x!)H-04Iqr7 zY_3%;Mkf*LV~{7qYaOZ2h}tIML9G%{G}uFW!aIvz>h^-Fk^3c}hW}{}tlGLN<#CJR zSIHBdFAMVwGSqKt!i!pj_zQ*^Rn_7NugOV@atUIwxfG?A$WiO&UFk^$6vllh)3!974 z1J{8dZ4*hI2>a7M91=4U3Dup<0`Z$2)LOtzruN=m@mcDyVJ07ik%P&dfK{EO_*6D` z2VHYv^*z9_B#D%vaWTcTurG6jCMK=frrMdJ!XU{b(;dLh)lHNi)aT1hAeFz#4pKiO zW4?RA8~Xp1y;m^wKgix|-T2>-y?30t!`_?zF`BU6p`ZmAy~lb3l;z!buG7}m7xf}R=A_oryPhTW0(aQV4_J?!!kvPzZ^d(JGC<#h+x@2R{ig5zrtke` zIsQ)}gZ`%P{ig5zkfQFKul}a*{kt~!o2T%br|^FcPvJN3_3yUsw|4*5?%&$|U#A(r zS?#~?2l&76riI`1z2Ee`-}JrT^u52sLH>pN`c2>aP2c-X-}|3)iQ8}b9>DecP2c-X z-}@h;@6GJc_Y!vKdp2M+*H84lPdoIzWyUFr1%Migm&Sw6t1K`pA+uI@?iz_S>vdt} z!XEE?cKpRPUe>#NzMg*Y^;A>U*Pz6ZXQr5aH!)RWQn!1m-tCie&<}GSeP1HLdi&tr zBl^6VC$0@2eUdbvMn>jhW7E=>lZxk)3yNn8#x*Br!qgbGsZFA!F2Q?L2fq%m1o7Ky%B0VwkBrTv_26bn z-q;RSjPF6$^u$eQ@1;IJQbsYt^YV(*R_A&{-5Pn~V(}{T$gYKil1mkPF}ooj;`=rV z5?E9*H)a)l4(IQ0NyJaLq)z*LQriFA+F%ntgISY zOb@vrbYw_C=UU*g4W0WyE6l80BLPVsVE)e5{pRq%p_PT^E9~`9@HT^@URz%RR`Hc_a1lTxW8`z=3>I z)r?@<+o5KwcZL@CM&UZYG5S3_>Z5iC(%*!r*uCjQ0gYd8-wXx=twt1?D&n~*@VMG4K^8`0CFLQW+?718wK0LTsJYcg~X63)+)psRj_Yd81SoT~vd?KUsnY5xb z7XX15PaTLq7BF+&xU`fQ#tq+tQHOdb-r!aU%y=J-6FBMPycaV$CLNoS!z(|RO`VvJ z?}gOdAIhN|fn^=YLkzCJGKc9@O-etbZgof>_`0ksMDaBNeF{^N%t=*li3$lQj13s> zq2d2H-VU_UyA&^}UV;B)VIfB^^--hSbbgk8lATjbbf5?xdYuU=c};%(YF##{EDqkc zDL!`TN1=w^1-i85KUA2cgdNsbJPIbPA?1CNKbTh5_1vs*9yAP=_0tcdz*C(q=X|f@ zfV)I>&94`4qW(;x-9Y>95okifTt8==DME2Z+#laPR1Db?0D%_4H@xdvB1xW32|zNNJ=si$F{5JdM` zi0h?&T?z@%x_C-7o!hkDeBwwsvbi5Mgc%ck{a0^2_}O!pBV(G*%-6-a0L&3m8Y$wy z{9Qva8w*L-_2zW%=I?4hYRtiB`w!}qbRA9|d=j$VZlyK7cnE#G0~e#%q!)NyIMDA- zQ#Ot(FNUW5JaAJt7-+llAlD?x^Uk#1Y|eqaS#y1-?ce?N&Q_qLq=w0sbK~j{Q&pA% zraH+!8au*%S+j`ZGn}0{{T45jw8oow-dsFB{`Ix=2(;C3HldSqjOp2O=lKGvkdb4QSUYvq8nn`%5;7E;QkH=|eXiJCS=We-Z3CW^() z9BJKC)|vl!<+--@)Il5X{^M8IhMJ>L+(fUx;Jy6y99i)U6cwyz(vY zy!^?Ur{w}SErHLj<^eJ8+dL*oSV|}G@twijrh+wt=DP}~XhDTVR=IC+t%*p(^NHNW zv1RSpx!37N(*7WDQMGTMAh}F^Sv<~@PYX)V{9+(x)cOaB4Gxo*dUdD^vB)i}qR92n z>hUJTgsR7!kG*|PYvG-J^cz-oKKW{tFs`O8lUu#}J6-N+%$x8?f%K6wZAjAk1GLu? zdphhAdj8}4pgf$CiCo6OF|Mi-ojUqEs}M-jSpS+4PwE2K_f- zCKDhpraCF@aWf`<4-e}*yQ^+==Lrq~z1E=Sr%tgO&F=WY8*HQpHNhkO3{2Y8%iLR2 z9n!H87*#}JoGMpjYn^IS!$AM^$)w5)mIH4G)6SeDwVTN4~fwsED${pD3Dfl)sWmyoP2kFg;twv{P6*0SY57PDe4%^-HPkR}hJ#^u$R9@n-wzcWD719+>pD~w? z+V!f94(p`VOOrBcjImfm_~(rWJXa_&L4(Wb_fElr3cqcm{*XF;_cVIrIV(mW!+A-? zpx}M=I0d=_ZEc5cd@yBT>%Q`P=f{(D^y_9T5CbAS-b+SFD|^^}?6kM<;Tb?5lPtj& zLcsbGQvlB@m*K0LIskR-2r+@)cGh#Eb_?YiG2Y+oWXRIW@RgP+2lB|Nm+ZvI@@(2g zK&QQ$z4g^{{wC}YFo8b+STcgT`lE)yAf1CjbkoKQwialh%cz%e*aRAi`DRj920;;{ zAcIdkPP=iGl=|utmgjCU%+HqujrpY(zQpB24I`Hi4usqd8+yp%Bf=wq3cMDMKvPba zMQ)0h8K`JrFbbzc+jmPaAMS#28tcito2?tr%AMtFy?3UY zQBMB1+zHP#&dV{}MKhM2Us|dmdk+jCaL=Do?2~X`*(ZHN z-E1%8_S@Mrg3k=m>)S7BxpI;xxv67^sR;y=F&ZJy_QNcG)%W8|D9YnYQ92xxd##Ca z#yW^nUKEuQp}}z*k{{85oqGp6;%Dvp4gu95T8w^ZyZ?g~-1i6!_~w*8r(FM%OMpBR zV#6`=@`yD8IwqF$xWdJ1XTTm;4q3DNFHOU4Tw>(FKNcMV6HWn(Q#bIW8M|>Q<}k^# z>(C)(%;KWULMc_!xtsdJ(f*a+O9huR*Mts^-~y;MS1a7Z;g%*0P#X}dS3ufEOVphu(7o-SWLM3R^Z0xX+ure_$@2{nZBoZ zQE2LBh=~@Ib2w%=6N^0>G+$`t@9ByrOc2WLG?7!WQFo3|j`n~KtJz{-syPghQ0r;Y zmV1M*{Sf+OGy>9<%xS~1hw`6&n{~!p0wf zJ?FWsEP7S6ODsq2G-OP@6Hy^d9z!m$PE2hKkf@29r?0+fmP#z=YLYPLDwRJ#lOx@vG&~RUN}#n@6#^4N9x1M#m9^#~7Qxu$FR zUQG8t5n3b;61s|x={vi*;4UHI{+l*<7sAw&v3^5t56%J@Q|Eq;*rKmq>T#6l56yi; zG)aK;I*z;e+V7FgsNl;FqHe^x`Kp#!AhE%PJ%xRM)P`~l#Pajyi%t#%4?3t-jyV9v zLc}a@>BO10!7T!hE2gUY*Ap2~GuV6v(Co0VTK6{c4X;z--jBjEetG*fSCVf(L^zd7 zMla@bGa{dD6fgVOCy^t#sAYFcYFy04++y-dHNYHsOgodisTD?umx{=^65u;URaoWB zpV$(Wo?$Kz@-|vTGG4ju_{v?d!o~+Ln^1`L(6TRZ6HnCzmh0K_X0sp*1SQA6?coHDojD0^Q?jRuAH9-GsgUUi$M}sYGnt zv2_gDoWX15-3Ug{9aEtx*%N<2AUR zrp5E%+6!ANF~WSWPoB9RG?jUIi$q9yY^Au{3El^;tZ=;0UWpRx3N$&(S6A*Rtl~@^ zE7#kg#rqqgoannlHA3`Zdb6t+G6uFBA_bQu#&Bxqy{h)s3 zsFZz4d*e>~XA95OOJUg`KImW(E)rpELPHPeIp7p2!azyl+M4H9*NB1ba_ttU24y1g z5qlmv4H5Hc`716*_xzO5w$AffB7UgYP}L7Z`jpK^9y@ceZn89QuG3Ea;v%N5Q{Z5t zQDncu%%-#g5xo7~5@m90XHIgTy1>&KW4Mj)8YAlt|$mg4n!sSB(e?tW6uK<%5uw zn%3mhKGrkqsP-pJT~-XX*@PO(T(Fln#5*n-6}i~NJ>`_o;*|pH&(%4spH)GF(Qm|T0cxd90BUyZY_XaWFhG)%BkU;eFoRSo9OH+u+ z%5rj8;lr%q8%50>eJ`e$k9`bA5Ay=MRW&DFHM@7=qx}*h|YbYC;Ji`+IoSUs&#(-9ceMk@(!bS+~ z9ehiH)F7ko%J;Nk>#kXfB?)1$FaGpMED_STB-wq`p`Gwqad5FGZskP{ygCQ;+)d7; z;F8!d*on*%$D?Z*j>LC0bp)Ma7*WE?AFKAN^fNjpB;Z>yVr|YNK8Fwat=LYt7uP>F zidQ&5&5!L2MJcNF#;5EnzN?Yv~y)a%MalCH06=mxTWZBQa zrZshtl2OD zSgW|3({V>rd@m^a|ke659U_4?F%^Ll&1_`eh~> zpKN%V`)$JM0Kql={PXvb=P-4y*Y93iFRUEZTs%oAwYLc!MK|9~9>aVLY9b=@9F(Z+$nwh$A0 z{YMJA1jzDij%Af_VhYM+qqE)o-yEy9G2OF=%josE9IR_>oVI#9| z-g2yi&=OgZ!@9_(Cm24IU;;C6*j;d`Be3z(N4A3tTD#<*8D@SBF=-ynG=S5f4&hTN zUUqMB6`Adwi?#&C@G*g}!c_)Eh`#Ee8%P?&B~8!?>vuPqO$9J)`r0}fkGkj{eV-;( z`bL0@+{RFmj^>_zcPr$_*Iz{WdvcW5jsJFYlX2Iz}L^C&1_XSe>C%xq2va&B!6C&4>~ zL?&lpX@Hl=re=~OHxH@*4`c2ndwAy|CR@ao1ZlcJ@x>Kr(nv&cS;eDcB$9ZK(4fFG z0_5W15ly%BCW#*xXrI!N6B)kyDwI>xB3Tf{rd}rz>Eq>{(x!m_PSH5x`hMQr>NYDHZXV9&tt(uc&;;kL5)x9O%t1D@|O5`OImn1gQ1Y(xMI`( z7R>3bwT;+ar0>mn4&MrwL=SW0!huf4*KE_5tn2eO&}sJD8qN=pHT$*5>81N2^86rT z%i&{gzPFt-;O8?2KEe>DMWenBUz3dx#O+7-(gK|r!}W^;LZw=d&a3Oq7D$SFCkD^} zp1p`Y_J&%JXLh+Fg}-ROagnOG8cx25lBXI%ervyL090poo_*2;`ZXs1B;hKx`Hmy9 zL@#01wB8?5=4GO_{OlOjyKIsw+c#*sLRLI;G5z=;RV5hwyxucVh`#kW^q%MNcX3k2 zx67Yp-tj@aCg(&rgyl|>gYCcpL(VSrwMo>04x<%hnZyU7$--8W&Rm+?(wBkn%skke zZ)=>K>XRk9G-F7jGq*SAG`X8tCm&k*v=66(F5_v7@`*3M#>DEN5-O(F9=Og-Kf>jP{ zjTW`vPfQx?Zhp%~j^|aNg@x|Tjp;lmqh1vmyHQrb)=wk9Q7@b>u>9(~dt`+`STFIW zxPLtQwhNgtdSF2Q*&t;})C0UhZLyF8My`hYs4=WIbjQ?r&SNK!4>m-@G4zU(`2E`2 zMPm~KH)brW!EB(r)`-PY{H<9Zl#uguYEa?y15(B{C|^Yoe7SRwF;h)VgZEV&DETq{ z{m-fcyp07R_4X--k3O!Zy!CamhzzB*obwz+Qnq>rL>cUFZfL4^KXDRhUmjMz0o>eq zsv{j_{91Z2CE{c!Ex_Px(oD9ohe=`ud9AF7kk!4o$rxJX0*}ToK8!U@#RPezo z^D2eCm6~7j;UA-0?h9}@zb&dM^_g8$n;bRkP7>!B*f;@oGj&Et^kkSp?vzB*s>q5R zH|CdZaK?3!Te;x&=tpu*gC3ICdj-!(fcp|oY~w>K@ZIo9%fQ4$Uueuj#SB#C;ok<0yX%n|Gq9|xARDH2 zb#{mKQ5VX45$@P)-LJM~NTo_#FxES)7)Ixdg&#$DA|yl=NJW;FW-w<{ZfU|@BCi2I zBw~d~Co?*ueID@s^bg%C!1G0u0&}FHv2i&`;HT%m1J^er zEZ2<95<{@*jet|#uy49cz8n&QWw&)Y@nhB)VhOxGxW(SXe3ui9HzEWpLU{ySKL}rv z_)7ap3@3Pi09j|&FC$Wse|mXrMZQ zRRf;^qyh)z>5(h`lSv1b2nGm+F>LQ*3(Pa&DKJk+!Jj`$4hR=F#WXdS(t`#JcV6eX z@BjAK;j;A)|M3U^{EaJ@?*0`_|CZzbzncc)c=?^$e0P3axyuOnW?O4kY2G*d{@X%7 z6axPGHI#$3ps*n8eXZF*iKUpcVNvY%cJ*G-&H#v07~X*Hxt!PbAx0w*_LQtb2^(@Q zAT3cM;GouR;yBc;5`S}Bpg=K#exsUic$P9>nNAliIkpez1R0Vzo_+Pq%Q1v0x5V2{ z_p?&kKP%xu%@Y!=7xNg_#LM{?-XVex>W>_*J-~thSw7Z3dkP0xIc@8Ly?(sRYda)} zdW#vf5xZ2mwAl3|@5N6U8esfFZtcRKw>((}qTSEwN`;0ZY6`_^Z{9B}Swnx9=CJcM1d)tmDcmL2((sG9`cPDmuT~BSw1I zkkw+Sx4=r8HR%VMksedOj^@#)mYD=mx!>qpTwksts_c&#RtH9@fAkm2m4RUW^L3tC zV59sUOCxEKjx@)3(F|7?@*h!pz|5?beJJ(`cd!0Z)?T4r+U9ngYvWY84@SEd+I79` z_T*lg581tUwjD|J7X{AOCXAD1dz(OJU1--*_Y`}5`t=d8M73yoy;zGU17NN$dN+t&xsWj49qYS*Ey%nu~t zI?BeGF7Eymw1y}ya*;$`AL(Me9^}}wFHi1E+xK1|W4Z2VoRliRes{jceud-O#GPNp zu%C>+XX?$gJh>5<4djQs?di_C06rHw*hWfH=FH<(n>(0aP`nYC_Svv>QURXb)@hy{ zwLhO3FwK8X%8t*cxJZ@~_H*3-XnEIbhr7jfO}n3WnE%zSPmPnHtcRjS=6@$HTI$ zzZ|}a)N04t(F;^`jO}*2@g0lXC#R1qw!ZJ0iB!PMjkzfLFOENVET!9**1H2-kY~?zq@;{XIV7PP4nyWC8t zE;!by*JyFnEP~WHk)4jI&v=>y?SalGssA$NNZaq=9P_bq^b}mhSEuF-a69wedi9T| zSrB6`2!H(vl637UIs1-S043OxEbkl^`KA4rnW5$vpHMELii9-v>b5T|yQd)9!cyTg zEYHDQyPU*KSkx=CS$s6z5*>djxDZWEU`Ou$q@Sb{2jrLP#lK8k{|FrbAl$B!!{-GO zf$o01Vfnwz`9i+v0r4W}_S7=>9?a*OiqT`gocAT(6B%4<3)#w$T?-fADRKTXh25ie z6iD9QjHFuw<-aO}UnSx|>X;0?$`vanrtx>}P356{)&2DlHA{cY-f``t+;&+$2Ix)^ zTR3GES*hqBoHr)8acth=VLCn+AG{G$Yj>i%%t+*%q(ofV(=_oQ$|Ah}y4f#lAi!>{ z68(=V!=2j}QtUHbh`k*JA=P+BSXMy+7G8sUsXbq%Yd`e~_KXR0}l}#=uTfWj;QOmwOZ2PN0MC;?L zk$uSr#j<(#g3sa_>n1#tSyQ{NUcLIsxl-7$FlNerRqB^350nMq zAr%{&K)ID09 zn7$DKhG)5q_!{b)JLvpcLxG}6$({n;ro#I5Z8G6uN5Q=_6vfJ2vsn26mq zH<#>Eqe%O^%~03o?b&U~$@24^aim`wjh#BqC!GwN2(C}f%jyrAq14uo+9Id_rJQ=Z zoy2%1&3?Jwz}rGcfvw%SM4n#$hgXMw02HJXn{8$N538x^3Y0WvH?}XniGhe4dE1nNj$(4fz%|MY+}tH}}lbe|snd|>H3Y~0?&x+^)mML$3Ji(>0v`uH$c z)ArP#vr%=I4;(n~umN6qQMpAQsk|sxjP(ByNG2ysl@c#hF`_Wv zSo{2EuljF`^MzSwE+uCNJG;`AChCl0T2wD%t}@iNcLC%lx5K%YG>hzmQLe~Qf993K ze(gA;wUhs#EPxRA?^0c=LYjGZ?i(&JA9G0$=^tj=OLO*ke~> zoPX_j0I`~!*VM#Wt4RH$i2qf${3pKxET+TGd0ymv)xlr80bsHJb<$PE`%e!5SXCx> Z+&k6Vp7fj#e*j-Mu7a-=Uw-iT{{hCGd>8-# literal 85940 zcmd?Rg_+BwYYHKPJ6H*gmVPO%gJbA2(g@p&j z!ovA=<2rDs)}3Y#3yZMCK|w)VML~g4+Z|-<;ADe^^&~PS6<=F#?QVCw--v=d(PLTF zRSjPvM%I0-;g*t67FiCa>+)nY)s5I(QBgNIh?+Ux&3z;{A_|ELQ`D~dKvd09vSBHw z&yB=Zn1G8STYc=77f%Oz&@eD8=M;{{k!7pG4Y4+)enlSG%>R8P?CxzU#V#p42qS*M zHQZXmP2p?Ij2)DW^`9@`h*`PaTP-%iCL6Ptmz8W?^F>wHUSZ#gT`H*3yCofVtXD6a zPJ;E3Fw)Vsh{(2y?1dQ9Fk@$fomgOQx1E@GuFT+4C~gz>E2W~&Btz~Ol2|M@ESi1K zyP3V7^xYO&@__h<+MRl-tEen7`jfwqVo`pDatiR>v{?V+vfQ?;ku92nZy9a0d=vRi zjf|zH`f{*)r=5q@sMa-{M z=h>n0C_LC)7@Eh`SoiawW$dR%yySS1rz^WsW_Je5LvQizY?gh! zX!8GNIZ%7U4Mba!b!w?u^2j27`@XbVJS`(^h0QN&!GY?_uhzBiL`{vNvS&BRj1bp| zZpsIXy~6=N$8!qi#9Esv+n;1I)x(>VH}{tpj|raP<&EjFqv6ZX$jZ#Z;rBCGu?TDU z*(7m8r;_JeVlLKmM^daaZ-Kk7`zP-ZV@ZkC$)5 ziISzT$Ci2?>S<5B87wqhD2l>oV!Ts!-6Xdy@)T5FHZA4vta2E7e$N5 zv+{B8*oQ0xtltWLyJZ#e!ty@o=oBu-B-~cZTm*>vDpV4fzb3PGwR&z zBDeW&N4x>CvakrVII&{0LhfX-^s>gPnI_yzIDV4IN)>OaGQ@J*L1K-+G|4k>KUJM= zBR;1`XVG)l+g++D>n#0DF7dttcTe)-6PM(&WTzA;Ct5X%v5@C$yfIG-^HVl2-SzOF zY7QZ_v9+Is)qG!j7VbN&wG8VCl2Zv$1!a(DSY}+$_$0Vc{m6*U2y7JV)V3)%=`yK9 z81+HLt?)Ca2}cA+8i$p;p_rLik?9B1gc*S*=_VB)BOf(1Kbjk@imuu1(kFi!(ObZ# zr&hvV0xro*E#ZE_JGhN>%eV5X6-NWI|LiSW??eG-h@g4d)Lj^?;lVfNFPuUo5g6y zNXFR4C}%#_XtvE>b{XIuP~mx4PGQ_+9AivcOEBfRg}c={B{el7-Yh;ZZsIlN`OS;M zGox9oIi^{`*IJ6bwa&NBx8b1b#Pgix{QTtn`sd&jxe&R+FT@HHKc?dC8fRUfQ`u&0 z30_oB*??o7DBaAznXi<8+v;OgrCY9B)(#gLPZCE`4x1F4g+{r0k_Kspv~beHJ&``4 z4Sqi>m*+5%O5t{Axq8&+3Hu?JovGm;iH<%UySWr!Uxtl7`^5W+Z%kxNeuHg;fQBdQ zUe<%G7Edu>tk(3vuXn9BEL(;S-)<>OIJS7Uka-79(M+;WicZAwjhn&D0`1WyufuWr z-hX>Bk+6Jk;W&Tcb5b)|U+LIdWKEG!cM}XvrI45K{ZTJu$#VU^r-NIDcb$hBa%wHy zeb1B2bHgLei`1*qHE8qw{B7jWs=%7VQWLCZglJ)Dp>AY@S1+u`c1(!9)fqbOXR*(O z#y!t~DKp9A73q%eZJcW58RzUPgS(dW+`XEkmkf;qTlW zq9yFBEOyUb4?QIBwmntTSn`+bZ~>Y?yYvuw2zq zD^20CPURD={TzFiE`fZ(1qEBfDdJ zsy17kS|)FWaixJ6G)=dNkBfM9Mx&U+UZqcwPoWR8J`}X}-JoYSS>_~X1ssEyh}Rj? zVzSlnEGX_G_b6aiB-;73K7ePD+?-30=K zVkIPUyy-bpI0rcC;B}S;8!l7Zop9t~*`!BZe|4EJpIfCp(zOZXb1GdPAaNK_@ucKl znP;g}g>J>vvxlvDHJ8iRR&X>%AB-xF<^?XELn^=36xBT|uHR%leE#iAaYQG{!P(=> z(l*V~ijwWV7Z>yM%yP=SW79v!ML9&1g*#(De2dHul4 zcS*aqmqRAa-mE#SC6Y5N{d82`fzv6>xWs*3=R)}d&W>bakQ;8OV`%jBpN7#zSzL0BDJM=q3*m%A)Oege`tty+X9`mKO{9F&7*Up zSqr#xwm8q>xBnIC&>lqJ7o-|!e5k%9z&mzd%pZfb9=Pb2Ul)ftMM(QC3)hPqD&s-Oo&#eZFQCfqxf-(!z zX+cAm!#krZ8$TM7L9@8rOpcm_?`}mb{KA5G+#4cJz|uas##oU(KJ0OQVB=B@`!aIn z;4s?=M|)! zF^E*oUJf707%*0xG#ps8H{fVF6m0|m&^5}&P{me51M2~BeFF>k8Z{OkaCHrMNnfM+ z_qEbB4lJBM?_*HZC6aAWxMo21DQmf$I|^4=k*^tXHpVD!MEvVE%E3D}$n; zE^Y;K=6zuevb5oaIJ;iWgCz+O2QHm$JYO(EoSj@e#354m{~RF>TwmShyU+ON5Kl*` z`-U3Yj0zxk8%7aceqR3j(u9nRjFRrww&J>vmHvJl_)F@(y{D(EI3FJv4CVz3@q*m# z_yokn#Q69H`2+=dfDt?%J}#awAUrM}%zsVtuX!HZcv!hRxOzH(To|wBePIdm@|3!N z|7xLs|NKR#4aDI;E4g_5y)9sad{>|F3Gnjs{d;cUQOT>j;@S=n8z-a34$c72fHkDW z#DpdP9RFXR{Ab1g@ucB@o)i!kdGtRY{U0Cw^UHnP9-w*%K5C48p zlJ9Ek|AQ5O@%hiY0HdV|CHek+Xwro1H5FHZ6s^N!Eq&k}kg}_vYdgR%j=$couFH~3 zo&`u?VaZ~tJeJdkT-$_$Uy&~c_s06MHn}d|`V~x0`GgszxpRB*@HXZV*KldCVT0Ok++ci#g^lUgsQjyr z7UP@Dq`{a!zriRwHvq=C`V~d*jBnh67(~BVWcm$>*Klt@(ImfH{f0i#HEiTdfwz*l z7^%CWI9PNR)87BQ7yOb*cFv3^JR#zD+rPz#T9)|D-fu8!^8n<1`pUn13lnetyoZbM z$N%l#K89fhgX``o(PRIPM8+Q-E$`lG+Xh?|o*j>1qn+0ns=eX9p}#$^TTeKCe3lDv zfV<;Q7Fyx2Re?l%`um?uz`X6A2OnkDZ7k+SRYzcEYi++r-fZO{E$OW4<~CrZGH}@5uClpe*brD(gy|0r1GTk zwVi9Wo!G{f8P`0Us(s1Sg@0)vDA+49A`#zl+GUj2b7}7XG*iTZ+u$Y*_vGZ{s2@2* z{I{apf$Q$!u~ei2?wRE>=p*Q+<;34#H7{zzA%KF=?JYUFY<79RA2uhw#s%Rw*qMGu z+fUPAknJTSspQ35dxs<)N(*haH?r8s7Y62h&Ci$0t(4SwY{6*`jE@L@b3!FO*kZP+ zM}-D)UUw_9g}0{!b#U)MNU3~cJa#x2KpZ0)u6KSbo7hVOnFN4*|CT(KD*@5Hi6i=3 z_0l#6G+>v|UHW&6$m#+r#{QMxmF%}Nx6%_28C6Zv~z0GpEHLVdVb;3aqCf_EmGTCujNx@}({GH1N zp+)2`#UJxqaZa>&z7k8fSiiGi-QwI(*EX4a6G}u#xVX8;m&g#9&2D7G)YI435cr(h zg(AIP#Bl>3@jGU!u(=KdZY>3uf}hyh7LDc;h z3|b?BA7<5H^ufI@+@F-t712w86I<6@3Xr2EwMVO(VMtsFX2u4A7-BK&f$S)u{aksW z27S<~^d}mXo{kpfJOxfG%ZE@z%nfL3z@sS42J|V{yI^ptQKS3VDaaW9MD;oX?t56} z`-s|y=oZB9)Ri2wTz-5eivxnUWutRPV{SoA1fC8m;UY#oOnn|;)TocqfSh?z^{7Hf zu#u{=%Xcu#inc8vY=R@BP%;9jBO-n84~)YK5`oDc#5|*z<-`!?0694liFe+037A(mc3}$@m8G`v(C|Cf;A@_M{tKKoqY$^PcvRVRq z@S*72B(d2`Z3J&$fOIgpiC_>+)@g0U^V7>znc#=WXfv!{nQ4&Qx6vuZZ&$3$s#8 z>f}>eUouFV*JCkK%uIQp06Z_49AL^Uz3Hu`5&k2qW15cG9J3ZNQsLczCfVz&61Koi z%GUoJOYnb=wboZ9YJpFe_5L{)@BbY8T;Hk7<>=YNeR`Ldz6OW#skn&k8>rt1a}Ni= zwXgYidi#?p^ZZn)A3CjWXg;enV(z95swO8VKNhc)j3I#b<##t>JRC;tA#7X(1&^uf zCEy?g7YZE`b5fqF_Dys(H8r_IF0UnKWl{RQ!98k|Rz zd=F-{q;n54);!!I15%Fw)$_qix;!h(Qc_ilYh}GW#4nipD%$7YWwcNk|90E&2_n?5 z5S0S%ogu~Svgedvbxg-S6PxyaXrs!85PY`&vw~-1929S*^~gwMWszlbR0LIF_9+#L zYG*G9JU^*+7-6Flcv;(jaS;(3kP5c*!9nf^fYbWBNcID0=8?;)U-lbVtS(&=-L$n< z&dwr_REEB3w4L^@*2P)xuQ4fxg(b>d(BIahXKU5->yfO=Tl@56*CpL)){aB3x}wpw z?_BZ_O3q_!8MH0KBSeDap*r21Kb1TR4WXQkM{W9ScYpsRtv7`1E41(W_FXz4X{@5~ zdvlC#t-Du$;1N!61J@TW4DM0(0dQyr!zGFl@NHK79Pc7-qm!0Xfn{KOE~C|9lIIf& z2_9U6`@EpJ9I-im0%9p4_sV(@p)HgTEjr8NP!5haj)QM!r-C;EbdPtZ>&+fd+0077 zaAzb`=gTTtkWo9ZK;q$=Z|1hU+n=4JQ3X$?b!UI}rcQw**M*PAYd zZmiOke^D@$!Jir0^R?cDl4~z8irF1|JQFf}b-$8ia$7UJC^1 z>#x%3&zaQ*=95ca$oEV61>E2>y+1$L?v-gh`%q~Zyu~rk5STdg#lSD;*`}d!goy4& zFb@+LkwRABx}2t&_3tb5e%!FgY8>^c4Pkik;^#2VCaoJOtwo`1u%0V%AX28oA8T<|D@)np>QSlOHQUU>`!b1QbFRhN%CMax@<>j{ z4<=8qBgRB8wYv6OTb>;LF;pa?lDQ~@dP^>O;$Ou(e1y=DU&*;YpGO&;8kpcZ;gD2s z<=8{*otm-Js<{hl9p`3idOy+he{-1Pk)ipE26OLWx<3Ia8}v1oa%{Y~*ZQMwVJN+5 zpk=4GMwW2G3rb>52>0p_2`X$*sfo!;si3%m4EOtZaqS%FBdHYBWc1d}uznvs)^fR4 z%auaaxty_gZPqfva>JP-siAC+TLJK7Ea^J6hhlW`|=i8S&&-MpF2ugx7@5 zcBX$;jjRoxS?5O+;#PbMN%=r?RPXy9wz@m@axv z!>ZoC_I)x|N0}uKS4{MX%AmS9%}emmWktc7-9oMRr^b!SgpSG*boW=Hz6;?Vgm*}A zsGP`Q@O34GfHNi3W$>LxyZ`D~cu)ckf=lns>f z#O-6XjcRn%+isq$*WI8R`Ieo=!L51NAyNL+qo?iiZt>gbfjuSuelTCTk>1eWNdGAc z6qIf>ALIjjqje7wA;=m~?5)X}@}d2iDx`g{Z_=v9*fAGN{waN;=)5_n|5DCl z4a=j9DwXN?83hf_obxt8Dnphv=^HY2-BvWdL8_ljl!vG4l55#wa;Q*%lDBHjabU7x zb$1w16&>@EzdkE0MfHWJ-Scfn4Rckyz?(zC{Hw>;5_594X!`~RQi}6(Qa_u$zD~S2 zksqfDQSaK$0=1f%=jK4{m?~o8us74CPWP48OMD<(dHQ8nAveAfsoe4UNczb@B-0yK+#h8Zd zEc3ItFA<;deKc75!93rc!KgR_sD-bIpw=2+22NajtrGEvmV{2Qoyx^x!~k}>qt#&x zgA)$2_8T#)=THz!K)clAu9x5uH{wfF(&FW;f=MUnNcN}W>MtSIdXf8%`)rnEFZxB_jSzXpvBhfn7_id>Zz4zVHn}fLqPGxX9hl6!h`$eC`p_Z1KPxkQZ1bk;2QK`IS#Hl0T zt$PF&drENbu)M&9Txy>fTm)E>drj&v^=)g*qxatPcC+I1KE^H25)o|&sTXzOCk|bT zA}fz!;MoaW#5%p8jj^ygpP-C9Igg>!HaJo!Niv{&EV161Yz03igfs3*Fv09X!;kn8 z*1coqfzCoLwdRb`oFQ;fvC2^Mfv&Y}BxR;{dk3u*CLmoR_NTWPV+})4P(TbGPn4?% z<00_EG;cU6R1yije3WJ1*Sz(BJ)Ss7#=@Ns%BDl6GF$w~dRBZ&EYmCPK6JX+5I#U1D$tA6Bzb62 zrJ~4*&1))}zl)`Mtn+gkSC<*Klx>8oDCGr3j=966j-o8Py_5y7Bg9Q4PTvzG)|-(L z44x{w<7dsaeCD4&@7^pk>mzs*JysDnxfSSoGJ3Ldu%WuGIIep3)=d;OcE~#LX58xi z?Ug6XLjkO3r|vyclejBxS$12&M<;HnAl_-R>WK5M>-LGg9)ms%=; zfTrMvSRL3aB1`P$)o}5Aalc+-U2FN{Yz0lOF&GyL_6XWwZ6-ZobS8Mz-}e|Q|59jV z+UVU+?zRk3-w^V^Gn+*bK`p7V{$2XTWWOGPb8;S4Q+f_}Y!Idh{$neEk6B4~uALqw zx8Wb8iq84~;2EtFY0y9nt$S@Q<@cQ_;Pkr$vW<_yU%2KE={`Tk&mGg;ZRsAJ@wxAD*;l;E;mvKK7JfSb*`lRdrhvL4`9K&b5?%b zp$n^o()bh!whkH17G+1STE;FbW1DRX<&U=!^c6G)gM*uF+nT&pOr}I)vKeUhAus~U zOuUDeu@37Lkd~S*qFkS^oUL~}EJH|*toS@^=U4v5E(Kw{B~;=^)&!TkpB8f;3RdTd zVv3p`8UPWrN;g7l&dew-{%tVWcZDP|prI7cxqjxh73QBN0Mf*GBitYG*sa+?^=||2 z(#y+BJwziG-lQslfo)J5+c%fht~%BhHc*vs9VU4ar$f^$@X)@$v4AVbFc_gzjig$E zYUzKP5p*T(Dmk}Z0|_&^F!r=a+-A|?>}05 z@^;^lOP(5UnwL9EE%~zF#wdrnTGY@zjH{v?|aHQX$Yu^qwyvpsl9k7Gsdid~);-4P-nsFt6a@OKoVE?jd>L zQT`%vEAMbGF_Z{#_GGtPGjel<7!za|0MdOGzpBQkrbqGubg3V{T-?wcD>LId$IoRk zCW2PiTN6Wt@DGxH;1#Rtxa2O<`c-`YHef>e)O0suG1oVeUB`GKTzBKEUyeuKOQ z^HJNr36NG#^OAe<+Hz2yi!O5Jy93qblv;t#`S+D$(Rqd-0Xa{nfwlgc*t8#1I2s!3 zA9!j;2jt%diWFBI(v6GNRCIYPt6V4ysvdtrMtj|E-jo!=Ib%e2oC4u%N5A~hR4+B8 zMdteAEV=|hepTbFmT?(K-=UM3gaBN`Z9s)Wa;+2^X&KvVPPcLH$vX)pmpn*3VlFOJ zDK}u48kVlmtR0Vhzo(VZpA?(=A>|Wm_s<)AgUg|#NtI**(ZYAn27lJK?Fr1nn`|C? zhWo;LD6@Q*=R*UmH5zpV58&>#S_dT}G5<$h^$v zk2XQypM`82>J80Vt~!R_;DS1~(4Ew$r|+m)9p}miSH^Nl08dO<)Xrm+KOi4fbQiqc zK~!LWFr`Z%Pnp96psZUwtiQMejg09)HOE%vE8D5H*AG}`xeE-RhwKW1*wQNx=5SS} z15F6{_=)&)WsKF~)U)u>Oxx|^H4y|;J6h-6SPfX!IO*HdyO5S>_q)y$98JY>u7Uh0 ze?yN!T|;PvcyL28HU57GaKY4^vU52sU4ehRi0GwABj$U!Klb@_nV_NXlMte0UqWlS zLjo{@iCzmgx>=x}01g(8rVZS0S~Rn1Sk33XYqZg$qA3<1;vmElwA+>2_FiX2ZTWUU zeds!SrYjtG$p$W;AMs@QeQN;+pN0Eit7+8Tuc_iyTcW2sDzIO%cv?^(sFF@W)%IIm z^1OdxC)O=VSzgwW$o8SGw>UOsKX$7CRRdxL{T$GwN_#AtZTm98E~{F=IJXdWKx&zJ z3)1b1x`rVE*Kw6l9~ysG`=jMS7k~@6QRY>;?tG0?Y5oaf-5!0yLTSYsF-A9aUjOXW zYTuFMIeET1?7>oFVPR+R#Sy6zOc1kR7g7Asnfv{hVwG=Sq#A0utkAcQny0kJ9x62K z9~?&)jtzJZMnheuxD{zc#Tfn-HT%O_Jj+5?c;5(*h*BwMhUr9HC|h^236VkFI)^#8 z)zN2BH=zTq1z>wFqoY`l-XEdu=W@F)xzsI&_RpRO9&X=%&vjkRxa;K3#TK|nY9%UN zd<_>N{?X~bWe^MdD%Cbbt%7PR_#xr6E->rwINHDIZ4^QXgZ8E4`)GG zC~GR?-~tW4BXUVZEM`V%?qjgaK11fQ)k_FH_&_DqqOw};k#ow^D@vq$vHOX0t$KoU zD-mI1ry^uy<#`o|P|tM_eqcv=LymDU94wVBUY6y;!$5!~R>&h~atSVrIexIFr8 zvq?hfq**OWl+*uGh!e7Gqc;NWkRtbCMa62Pu45p2j^WDDojvC~s9l~` zG2Wo-ciLA6kZR$?=IVn+R-{_y zC)nhSD3V(>&0xhjGq`g43Z?)}maz_qVfFmZ9vo~FK)F(~qA{1dUR@Pe@}56z5(@@v z&+w?-4qbsJKAc54?4<0HVk8C5aX)z^iQW%0YfA#uutrW|1b2~)d) z6wJKnXvYd}2&$p>yB-XVq4TAu#kk32pl?7k@`Y+_7Qon8w>e(SlQC8SjJ2dZWV;&v zs*@KpFP=~XyDXrJT5P`!FqnaP8>9RLXL19KO;Vm+sR0;^n=gg|`T>!k{zqWRLiggs zuYZbBqaVgKKehm)ycp)O^5QxqWYwGHF(mh7v4T4QS;S#4Z=<^dF_^7d>cP0n5|S(F ze?iWLrWzg|DKx6F9saCiRccU~8(Lk>g(hjF#Z2i>>)E!1ZuglD8j8pk6copYe zZ+52%%|@e5ha;GnE8R#msDcz!G$fCTDKZ9X!oJG2iw>3BF+`g?STe`kbZ%+pNT|V^ z51cYbFj>y4J(Xw&$Iys=KWp+}9Soh@R+`&VMHzpPH8#%N9P22bl9 zPPIl0gX+y9S6neN1DNcF@$<>u_Qeh4^7mp3f1WInmGnu(#!|%OY^20&W`~6R&dZ6} z!+|Wd=|j5g&wl%F-UHdWr^I=Q%D>^S{_XDr14(WT8mYuIqJ6)@h!zKJ`m#;fQJN{Y z%Q{attGjbGIg>{4iR0nm4bw1iXW@UNus`K9mtfKBX{Z=r`MYV9LlYYM>NH1?tTRU8*q>%Gm(QY>)ibEuOdM zwq{49Ll#C$FZlt*#jL9|!M6=!+;W#jG8n`v0g14+=h~J7vJkM;T+CFz+XMv1rr}eS z-5tpI#QT*m7>7N1d8Hlnxr8xjJTZ zrZj)EMN3rd#!&D*PqG=p-}$~$065G9qaFj8v^I( zFmC;!?7Nk$={`7khBqT4!42*{4Hs`7Zn}x{gqX0y)QjBh>ML{k?5EhIw*OBt(x%|Cv^uXh*Hfz!ql3^ zXoDw=8XIOKh5I#(3SIRs3~?BDfac&UKbTnuxea@sNdpJIi*^&iunpOD0{gifo4XbM z$N__Lm)wr&s7R$D>_8l3ZU9M)bk30t;A452X^SzPO+neK>xkw7f277IJ4RH!p%@Zr@w9-9(l7h~tWI1$Z8Z>C*QXHH)BV;P#h+b`w|YFc6}+%; z3*ccHR@NN|{u>noOy|rAw5M$er~^+tk|wzgIqe|)%oz-RmF^jaiIh86Q+NIUXX??= zj+X!KzL--evCIVg(Oa%oOw!3x2}o}D1kgJ(cl<~nj)SZ)^G=Fvc$*?#=P2I<^z&e0%(B0iUX!jhCkc>q{0(Arg6Hv->=g`x+CDcYJ#B%p!dNZWAB5u9*}R9 zQp)`M32I0hxp#~3Q#zo{qlFoBaa!XxBkJ&;12%}1mLcM!)ts5}#MZ99&8o)SRxEZU zCTV%72o&zE3J9Q5uKu(iU4k2&C${c5tV+%N+^^US<0gQ@Z_iO+Fplqv07&fjRyeo; zKQ>NbloLf_W7``&D8(8>EwazVSnWGNEw+4|RQT>)$GFdugZi8qy%bClgO_-s2!PHw z9cI*F$BtWxI3D6ZO&UuIvMi#a1|&$C4(Kxa|8Dar1-eAG1YZ6n^-qgCOc+jInM)O3 z>L@?qAdlkMMA(S-2-mcGjTp_$4xpvoxn*Q5irUXU`XBFK&Dd2Lew`XsxPciClI|sl>p*bhyM@>%YmJK&)rZ6< zmRsxFjPLj3xhHE)MJShX;Q@8XN^yV6mp0Za8{z|n?@F}qx)^3ATczgYvO2G`9Z9jV z(u)2=S+!ZO^mOyD?G?Ju!Q0GCCfmCMcZd45tcQMCsQJH?2?kG#I2RZUo-ZyKsIfj6yk%Us78>4Y)_t=(O=){_d7$<5 zZ7MG@II;U~`vWi!WNevyL*yxiJN@E9HMY;l)Ke z0p%EnM7B62IKQ@XT%O*1zj|h`ueQS_sY8NaRs0`NvIG~-%!n=zN|W4sV}V3` zi<=C>UQy-vuRai83JSm$b@Qj4c72Xz?~ARBSgkC{gY1YMNV#8uRS_|^9@~0Ip!la2N zY`w1!U;R$b()s8*gUxq?1}7;)7#J6^guCeZzXOn9RltWH&awSzLpV~fk%^ry0W(pA z&^lz)4ZtQp6=^ItDrXaH?AodB?|09o{;@f^i;JLkZJY9|F38GgO$zc=%{|#79*h{p z6U;jse^eZk%HnYABUe(OuWl}SOJi`aS$LE2Xxk%Y#CAfoq1TS9{m9881D^nDRd?F3 z%5(X$xkb{_7IN9>qO?z}j|=aMYuNU0A~aHaSMkEwyo_?E!W zzfF+*T&rFL-BLwQgBX$i38c0o>*cD{@vqyvdm$FRaM7zqMlR^<-RlUu+Aa1K@IA(+ zd4KfLDP`t3^bQhT;bQPTH%46SAZMk*gku5RK0#3V@Q*{|(7lU*id3@!%QS|vV`JV+ z7x&0>gRcN|>(v3^6s=vwKe9Nt-U5y}g845eRC)_S+KTcQbDMLM&i(i+^IuIPOKkum z`xiNM>vf6UhcpW_D<}{sN$Vmv2bH^#aWXCBJ3IdqEWHvfu-g}2sA;xcwjXaQeM*9! ztE{|}TWq6cn|=Z}7O|O`!CzXEkyf9m_~;D)hFHm9@X{lXfAZ@2mCK<0%c-h{b@;Uh z93>El#w6_TdopO<^&fG4#GPj5Q|Es&Nx8HQEdolV_urS7>gD9*F5xx@r5jHxF3Z?V z8jnw!8;`>g{jYeFeTwexPMs0ktSP;;vyL9)LWs0fo#nJBEtgx+>fI@T1~(v*P3V6G z*~;}ys~KungKD+~i~8`Y*@9YW(O>w8VXc$-Wm^A$%Zcx^k3&a$KR`LixG! zIFEl-5(M@G=L-$2;muwIdHz3ka9AWHro~dTvbeNlBzRu5TqmafUZu>Cf=UmEi_ZGC zK*hWKcD{tNvrlBa1?q;`h^9aZBg@V|^rY!><|-PthrixI&YZg2b+3wndzHD`+z{On z+0;|HH4ARTO>!;e>{(#rBCEs9yqqwqAi$X{r=Pypc^2T~a5;VD^GSS>l9ONe-PT~m z8EsQ78tTrQk+$!@iNUJ;nq#~}HWqBnsm16ol@taSjOkg}>!tOLGqDV1TCxx$G(my) zk9Z*nf{l5%j~t`Z{G^T!GR+24y0VVqsrqbth-GFrHl^F1T2LX@ z^o=qao}C0d;+~JgG4PgFJK1u5MQ~2pmyu_&;!U|X_2^Tu>F^pkI*kfHM`hc^*xUw| ziRV6j)}1pq0k;@-OezZ(EF0<3yukpEiyas&+CGL8<$An~RnB8LH-pR{9WCwGEB6wV zlcapJHO+5mNDH#vULY{aNjpX&MV6^xE_jKMA3OVX&>d1O**)Ms>$J#!}z?6XPgU8kXa9*$1K-Y$|+T`jUQ zvF>yS`%Q5}eaA!W;Bg7#3iY#EFqiRJ^z8>H$dNp;puYWCnRsQ&)i z=o()^=3_v^0m!VH0zl0ku6=sXDWhuZwc${$i>dvUg7*Y9UM7z6J3uclU@D&WrS9%q zeYG38PUpSxHAw(9hSFEihpT46#a^aeeiz^&@x-3Iu=RGEm#GQMSAeCmeWtMvv4IOa zjo?ukELPm*Ie7m*J9YEN$rvfGzYe{{nQ@i2y4`+Tz#Lo?Ra7V~{CwP~z_g-0O7RRLO`)`gh24-Z~(6lYZ}tMh>ZVJ&Giu? zjVAIOvvR97?p8YIe|fPz@=0G}|&%~UkMesi)hY4y=s z+5Tyej~umI8J{?NcO{c)lmow~+XSf%e9)Qa|ookc!_^#IuHJ`<}PZb;VSu}mJgpHCeJw%YhS;`1;T#;oKxEs86ch>AdQ5+ZretEvI~080_MkcOnJXZ=9sc%2}`TzK{;6v28OI zUCFgvSQzJXe+~Ud&*T$_tN3aDulNbTKA?cIM0q5DeYoy#j;-8yfEvSckK`npw;SPq z+Q%wce>|E_m1X>EVaYrx8*7hMNNA6ZteNidVU~Vbet%8Ultw;z{G=Q5bdL{ zO>MBvfENxb<@DPmz6W?`V7xbd6j&S zVfu;I@#b~J$%3MJV+UGiK59}gn?ZDjggSh^r?Eoeakob+I+jkx!#c9?m6KZL4D?ic z%{fqiCBJ@UKf=Mey|lQ+P>8lw^>KAjEWfXbcT4_ zmX`ZMP_KxS%cE$T?CQq}*Ds+%#s_?xGCDt(Pmsuz@yl$A*+0-uWRRoDiY&5s8>GT^ z{@%|0m-vstA7z}R;0tWUnimh3E%^V4_!W5e;dDvrf2TEN*MZ`d-&?xBaq&IK#)4u5 z0uK*w7}-c>13x(+$ea1!U3>c06Xl{*`g7$qTwY`4d0W3?U-$nC9?^ke24D*^j-your zI)$Z+FwmX7%5cb;Pd@pP$iV7s{-pqBA5^~rDWL6+3vJ5 zlEZNO;`|~E=Hzm8ag;vY9-{AL11cUg>s%r5IXgORypWX&?e=f1_X5f?w++t@layt~q0Up@dOIB&!n zeMn@hq~o7V&UKhOBf>gQ!wM7uhd1QrKb)-Ff1)zI*vjjn+LyeK6OwC325J9%S-vbW zQv1hc+?%$*%e$>P!{Wxnt8WJ@BBdAm_?90_|D(iRPv zk5hM0ej5-U!^17k@@=P<->^*CA({j9cg%tQV!%0)*TQL5M`GVymBBs$M68tGKuXd) z$O(2sZ%Xus1Xw6CMEM{o)DNA<%)WUxb!43TPT(u3`)5N^-900mHF|FGaDFiH!2$6o z?tI8F`jqAS@so@A!eL?1OZGgcbpt*@ubzC-bAdUpn)G+D^;Wm-^WAj@28oEev+gW> z#8UG8rs3oY2(pqdUyBUevQJ&| z8`zD*mZsUTV@9bqhPsOqI;A`wT@H>y2Z`IZXQV^b7}VYu=b(DB0xhk)h<4C&tj0l z6UhDD6PrE*eXBOI^*(GRXyN5SZM*c2t511^>V>bKQ&h>+v#j$c-*s>6^4l94HHwHIk&A!PID zVr4rP+RS99vZQ^VI3KYZ;wzqH)Zo$9C{T1Wisp?2>Y}A|$8>m^LVevbz}Vxs&W52c zonf1=G}`hMZWog~Utag|VI#N0NanYQbfe0hX>^e$nySd$$I~ccr^SN1wH~eqT{mGE z@(*hA9lz{V5{iD-I-OhBJPDRM4E$LemtWWjOJeV zK8~;rZ^)3^cBv0e2Ox(~wblp~g5YkrXC>KX=5jx(&BSx4b+yB!FMe~{di;1fVNiU- z*iN+@2#7$@o2m0f`5#sioWjdk z*-?j@@sdb|hc$!ABUK$;j=elLm~Jb~jtM_iP$)?qy{3@$u9Rb1mVTO+>&aZ?|3bK0 zhifSl8I<(R7Y#k~W@QN;2{Q-?QDd-4S=%EZ#Y802&ry)AT%>l@-BaYtc6BEfGudWk zc9!JPW)4Ao5~^^$vYmYMxV!tNYveQvZ*~=CjSKkD*yJu)8-n4p7_@h)a$>F7%^#;T1;YMX81~cP+LRW-Xr>| zLQ0lz`EF02eT8JJ>*uj`y!#{L@`S43eiKEy#B5B_sxR=uyvcKBWGwltF#@uxJJ{t; zdX8(~sa4H_8S{eia#fOp`K=_9bK^U- zr*H=Pv%H~bRX^`7@Tc!PO3Ge1!D1kem-LiadqR?z=)JQ6DXTCBTpe|P3%cY`SzB2= z+|jWB`E1O3-$6;_l9?jIJhg9bap8g!I(WKKp9)HHt zvoYKGZe_>nli`x7W|w`)CHEUZed2BB2gBTPAco#m^zwG_;Q3U5rn)@1pcaoozj#gB z-YFZM%6}2{{Vd&NFn%|bc)Tq5v3a1FdxCTJ`x*vXsUb4{@ugyI{Jfb981+HRaVJ$HITFW5A^Sjh+3cd+#m2?$^qdko!7UZ z1%Bl&zlYD?=Hz2nu&n@r=*mU;VF_lG81RCdZKycF-D-c~PIOe-AVZpjJ_dXaMidBmOMi)y&P4V~`v+Vkk&-dwfT zp~2_Dt4wYBwXJs8(cvnDXX2GTL)ds-}4zx2d2K(-4_A(wSL4WTAGcz zUv%Sbyh8iliT1=EANXha(*8n2<%x!ea!y9F1(MrSCUUJ0i@mKMU@AVBrjVRd(vZs% zhPIR>6Eo=*)&g^5X7N`Alz_i5Nvo^N5OSaKhW|1H+#d>B1Xpp9)2$ccv?Nz^MK=lc3LZ@+$$D^kA33^C1Pg2!AFiwqrT3KL?W?GU(gceSe%bZZ&cFp zis2^jBfMil9Y>N4kAs{`yhEEK70urPtZ{* zo$=>ZqL!J4OJ9AiL~TlDR#JwaVOk%$qysH{fVXq03OANX^XF3@guRfJ_DQ#Vc)Z#p zVD_`_{;eBhG#!UqLEJ01AD~`rIAcohBk-tNvprmfI$JHHs<@ zMK>o-igsD`TxcqAUfv1mglT3H5RUD2oeuru7{V#wBAITth;@G2YPWcH}k+qSO!^iUhg1%CrE$LmOsGvW}b2rBhVyE zyVB+ft0|IQOq6B@sMSmzY9GxCT|KD!S!@mGo&&H;+8&)>oC9G0+(3Jtsd~}izSn>R zErOMfZKO;&e$s#5HI46XPQqs5-{x*iT;E;|KT%}HRw10y=<<}+>~=i_ z1PoWG5h56Q0i|Hs5q|LC>73#l*F4WU<$@i!aEjYC)#wXOt(RYUI$l9G+BuQ3O12tW zUkV6{7bFQVgV3+Ap=p9oHUn|7?y0V!qN~yqD|{;Q1>glEC-$`b4Xj`N>P<=hN0zH? z>O1LrNO!uQ<94Ee@bqd?1+I+<_jQaXdk6=2Id!{_gyRXLo>FS|g1uq$SBX#}e_*n0 zjxtrm!{R9BC3|Y3YA<=F>qzgL`4L?uO+K6H*h`hVaFNDJ=L{6|BQ2}#nA0rR#EKO? z2rq?t<+SDN>(xacoQQoClej@U3(cDmf&~21ASE!OOrn?PDsm<`ex~#vVG2|=6*sJt@>-xPU55DOUis{#2kiZi-468(`?nQV~OgkF($B@Ow) zt|vb=4Px3h6A&R~%H^4yv7Gb)o~vwJl7j46TpSn$f^qRS7kG|fk8Wz#rz!DH{H$YX zIq&-;?xhF|mrw5oF}&f@FFT}wV#4`SWOo;K7CpXu{Oe$5H4RAQ`(IAc>h(Q4jG)VA zK4{u$@>#b`@5*Vd#RQjDMhDAFAL5LH#KUh2KSdW6n`NAOHKArQB5!F+Fr)870V|M2Qevc z7)PF`$Zm233o8rS4$@8`rd`})pU@Vq>YHPF_nYc_II9aI$;N^I(tqlg`OqcN9xIz_ zEoWCWL08=RiwJH0%VLE4LU!r^xI?%c#j_7e#4lzCXj>QW2wI@sldV$5Js*CAUvcX- zXdU#vTbzfgnr91=ycHzhfs7~J{FnuD?c)tf?aTj7tgsn(IW3J&NC1z%AMzm{4qRLu zRo))*gr}nz4a|H|z1jXK{0Wkta?t<8ov+&+M;d|Ri&c^-`VsHMY|CR$g^V=i$P%+M zO~G;~v9Uj0`MTyyORPqbnMgnvkIJcqyqLuBmm0h)=)LD#?daJiiCA*c9Z;o3T8x9o z&Fa;Bnn)IR1U|H}1B}ts;Dbk44K_xiPt7ID){dG+X|wj85&c59zM8s7wm}7HK5TWg z%MX3z{OZkQ+yNnf+cLb0e_~Ypi}uPvko%HBPht($HQSwJ-k_)7;=J7_c~|RN4D@L< zP%=ed>~i8F%RKf$=Wa!m&7JIb6w`Ad93=;RCA?Yizw;3QE^))8 z|EJgVqcC^6gj1T|WA*b6-?=?yySfSuHc%l;|qE( zPL&!s1^7z;yHWwZrgld^0or<4MnmYoWn$0RrEoU;8LT(Rpm zCjf4j{(+PLLWj*}cMX7g)D8-D^7jzfTR@t)?qVrvKLvN^Y6=H^(JsdT=2|$Eja~Vt zw)%+~{)aEO1s!sOr|zG=jWcL)KCp2~>=tb>^rGB} zME9|{f#s^L0B-6qa~9AI6GFF%@`4_a=^@MMo?MaJWeaQIh(C)-r#rT|4V9l6Z%dX7 zl;VZ}0i5~4=@&pZT)Ma?Fpvvj9%Itk(Q&&h52cR{TFmfB9_XkVOeyRo*}e-bnr&>C z%liF+7P*?@*+=Z)s(L!iQP=)r^@e5|SP9h3G8_u*1Yl3~4{J0xUKS151x?tfaMz^N z6K69}N*;cIP1oapF*B31At;0IpEu)|2949(uc~TPk5#c$aT}745>b2tN>K3ih^f*1 zv}YGo`m}7VA_wQs<8?Vfo91`4Wr2L=X$B3hQ-BSlRPor z9#4S9)c&~`T|)baf`V;5So_)?hazK#4e$JZJ9X&+mwH9TiJ)dE(7-L9+VXm8=l}w8 z4{;D^^SKso3+UX_e8amjq>VOlzi$nC|JRRhi9E(sb8Hd^iCGJ@(r(D$N3HTAwHe}8 z;n`l7(Rc0WOY_T*|B0IU#m|pGn#20>ZbTVRoUS0|lN|8jBk+MFY}>*88w~IU#5*8z zFWn=|<;izAN-FfeIq=~+@Byn(`EKiPoPiBomw@hG_v7;1IN^)J2Eev}5AT5wmDYZj z1b@%6YXI2dmc2ub2GGCgY^mVo-m`!{H3T>euB12ib3Vk}8J& z3u^tw>Liuu(SF3>cV5EIi6^QbEH2=JlAd9)Y%R{!;y^32bFK6wt< zMB&=A!|sUN?O!}8mw^v=+P@%Cx(O%O6z6{qe%mh#coGWXVKswXU*A5$55E9DbiaLM z2Z>U2Sp#VM#fWP_{mz=7?++vXFk+qD#r=_pKdR}EYWfdr@kb*580$aA`accDABp(? zmPD+AVDx>`mZswZOS374%ICKpjJ&u1O#J@H(a85QZ@JI#2w8qIg%fX`73MbA8?xPb z{d)80=+W#v(Ze!@w`ywMb8p&zChonAx`1+WCIjNxB5a~<5;BoQntt^$Wn#th<8%r= z1=i*}j`U2`PS~)Ki+jt?{iok3@BqP7ClFqozAW=~JD3Nz_5Ic(6{M}UM-QC7`>&_| z_2FAQ7Z>?~3lQ1tKl1!LFA@kZx*o*Y&>twi0M`1~Q~&zltiKTf`CPmOE%@ZG%Rcwb zfl&~5&R)ucolUsRdG(sdi!*>3DmSfw-CP7V@F^Pz?@py1?$u7yKk{Rz|9pJl8W7eT zQvf#b?m^tpu<3B}-Pgu(#FTFtKr`#Q)!k)*F$ph)felDk$uh8nE$J(Fak^0UADYOCNL@x77D z(kXw9joEvDRTA#v%^!Zt_l&nN*f@0gUQ}EjjOb0y?GBlKE*LkRpftT#DTZJ)&T0+W zf`H_C%?BYMz6q~%P-7+mk4k#1G2$W$Q# z5c*i&3f9xLZ9m21gb){5O2$O(g&34vK@UByb>c*rX2rX!!^aan_FB6wzq4?~4ZVan zKW)e3d;4ZIe?x^Bkv)6&#ym4(o|g}XdJp-`M|(5e%XIBLJ#G9(mM_^Ceb#(*>1z6E zk6~t|YPD=0W+by-F*x)V)nf%Vyf}R0l*I6<)0DB~*az3VDN-8$xtf%7dZj}yK z8P?lrbv!bA)I5PHC9ELvIE+s+G8>70+t+hjtF%8TTWxHiGfu*6IQh%F_gD9;Qgnz( z^P^p{@T0uEEB0Pq?+fJc$~-G8EB1r4Wk`4TxWErS>lnL{Yu^E54~Mx3*StrhyoWv@ zayp*Xqc)kb`LH$$m=XW;G};;(d-c$>@5^bG#B?N5H9W%Ivt#lVqbeJvsnUP@nT01) zuWrB>ZuV=ov{ zH3`5B8JQ2S_CFDWCWzqud$Ha_t7Go&C(d*T{ASgUF!bHmB$8KqLkx@*LM@j7e80{95H?Xj#jBIq9%Q-mOb(6&gI zlUsg6!y-d~gv3n0@y#c@Yhbr;A8yrT-z#4zY#OTs*+@e0zT{?5j^=vp2;8gVTw?C! zXWYtWRj7}%$a^=>lo>71XpWq#8>R0pd+bFGBM(K285@_B?8SQtp8w6;xwqt8zmb?* z7HMLraa;ulO@GnT!^e#SdZE5@RUqh-lg{GQ()7^*VqR=@HExfD#HH$l&kkG(sm0Fy z0{GvMH)kVP1UxW7ZT6XDbV^FfyY_A9XD@f3+V&mj`AhZ%C#_J8>S|8I`FHF%6+nQ6 z0~&slzU(?q*5vH$^Jk&eR%Sh;?}LL*cR;yum##$a?yaI4l%8JFTB-ERr zE0U7BKmq1qN$Ey&NI`;;u+R#!31AA0cC|XJXZJoiV_qDgfTP^&0poJ(T9*uaGgG0cO`P;au>VA){*2igAah=k6#?NMLcUi zOlhsTbMr$DD(q$DdYPNt0xVT`5*X^_b>cNQPSip{UI<#Y)5QEYn?3*xaC|9+fbbYz z0GfU`Wrt;Ok%ezfN3N&LA#Pw4c;{hYMD$nZzo1SxO7gD{W6xf(-L+2T`8@z6>=y85 zAvIA0E;4_PaQrs3^}`Qx>ns< z0Ns_tw}GQ6=UZ7ErFb03%v(=ajk6rO0&m`y^f>d>0SeBg0TU${lPWn@$Hu`vfA#Jr zBU^XAesv8&Z!Vu+FaK{s02fHe7Z~vb9QE}qf^Miu+9|m_eCfC+Y3Oz1TivM9myp(2 zIdk7h1xo9Z-pA+bsCB~(&>(V|SATHpWa1_=p_ZhfulWGSMP6}RI=oIzT9|OCtE}+z zmAMG|?VFHfNB;=U^H=`c=c5ty#?K^;wrTz<9^9fO<Cb?2rLLWEn*2kXOxGZtv`mrE`UGH#XtDtqQZl#($@BFePtK5*lVqHZvSXCgB+Vs zJ^F3WzI`o~9vXFkR83aIuUqDgAcvquQa?{;fPlc^a2qe2Wjnq%;lR%0Cr|EXh(nF3 z>Ph}szepZjXS=V$`ui`vjdKEnUlipc`}DO1(n#LJ`m|^q4yU&}0OuVsDQgB#(5r}K zL}rJwFAo0w_r)Ye^8A>S2z&IYZ}wfE_DQ5IMGuAHp6NzUlK{!9fCXIlG^G1 z@=*Wp0lS8-{^dr#f$UZ%sV>c8G5A0(ka=Z z*!imXeCx6|fsFJRnD8?yJxT$e>=LqL=o%%31R4!dPn$oERSGE#)SayAmKvjWNh?08 zrSFMe9B10q`bh>0*?=lT_+w6ewVxXA{C}l@4MXusxwx63ndl&Sjy=FEyy+ zGkLM|Piny;@QOv`Vyd8y$tH4xC#`&GC7})aec%;;mGv$td%9lzI9n`)TJzSywW3#a zPi$S?Wpeuw!L|^}w-IQ)nQq+BxSnW}-J;JN-SeRnVERpn`p~%@u#jC){D9y0DFoe7cbFNrHKh6aq&BvOVFZEHxf+Q* z47+bjo%C-QD`^vbBtk~ND~*FePrl`cz=Ic)mQte0P0 z#N2dTqelqkQE^y@5uUbn{&=$F?}g=92tb~&v>y`p;TaeC>t~Wrxv~&6A*Ag*XB#Mf z6tcQRQ^f+N#bP}C1a&KLf)tHuVn~maSUJ*$I=9tI`-@AgADl$l$+aejSQ^QfhZ>?; z6^9C#j=3;L1VqkJPjVekK5&c+Fi3=>v6BHE8-^u#foNabzF_G?oqpfRI;58`RXxGE zx%@~Y9l{|4qRN0*t=hD^r^i6g^f#CWf?iu!jfJJCsn$n6W+ZRsZ;%U+i}y1Zcd(@w z?lU}k)Cuye1{TnUY+q|GW|cS==+G}Q0Y*H4T(Xy%r44hd-kh*^R!~wnM^?o!UzU&5 zCuU;leq3aI&)0&Uth4Z0(P~=hr@ocrxz;?|vxpM!&0J)a6!F-#{y@%8!y){`aQL4c z4*6~!^U!?X>fGb2EjClCt*ZgSqn)YAwC$OKP&Qe}cT^j1vlp5g*mc9LprA(6;VdxA z@A92>Rz_JG*mpiK*&Z-Qz^cqWdtyJ39u~gu3nf$z zR^EaZ%ay`r`W~ZC76rFjM^02#K}kL(jN6P?M#4~hDBOI=&k5o_m>}(@CY&hDNSpB3 zXhM1uO4JUsZZ`^KEAW*K=`;o&wL2R$pKR+*KWAGowK7Ki-mq+cfrPPJTyqmnGdNmy z{K5}S*tHb_QBMl7LqpKSzI5sBRc$(C6m|H%fXcq*14uQQ6-GkdLy5h6Bav`oPNqLG z59NWLxywu}eQ}e%S!cCfjeU=->fWZUo?HXF^c10k>;rn|z07lzkAYza2zbw`!}MLF zbMzCB7LP{)&T#JfwU_IMdGROQxk4WoV#HFgM3jBbilxV1NSZpA(dba*8td*&kuJwM0R)@loEQQH@dKt|xCn9D%2HEq89-QitG05F+~=7& z=$kEdbZyFTrhhEntq9PCnEbQW*|nrO-cI0K#I|Zc+BKXkU!&M2dSflRUMrJ}dpih) z`J*!T38}WKS+vn6%rbx;gc{xPek*FMs;aZn`t`NU#ugF@Z(1Za15m0rAGok^L+Ut}1;t8+qo zE{aKwB2Ii+P1qqavJ{D+YXi^Gh3wgZ)EUB69rClt7uZSM^%|cG^>mR&EIn_P`nE7CBBj)M7DF4 zXU%uIPJCgslA;)q-%!QGwdVn#3?6e!mz}6U_H2 zwQBauixxuZVZxp7gxt_BM21Tvc!2uMg7QP_^nkYlj+>1ZnOh++kD& z?8(iI!{;w;I>X!}R~?^SV#GM(sc;=MyZt_OK_LN~mBUyFtMaZlg4s{pYRy~fOd6Pg zfz5KZlu5&q+ojhyPRE)!POIS2A8y?=;3SG$6@7zAagkqbLp2>QK1fkyRLr$usb9(T zdQZ<+jnPM_1mBBxNnT!84fWt@k_F@t?u6&Xdd#EWXZ+0JZ$2rUxeUzejj?Pxg zMwafoT!C%CyY~dU2?z~FJy$__7Rh@d0Vet8SU;Y};7{%`vhd({uwJ%NTK+a<^)h5s zF8o$%mOL@tP3at|7Nl&PW2QvA#%4UV>a$Jp40xVK|9~e(`IIc1^A)LYAN-ceO2?^H z^~Ggq1;9Gumik7{mF%y!1huX;ZQPFcIf0Nc&rh?u2bxgp%3r0Yr#E&)32v&j^zEF1 zUP@)g*GgiZAYPp)*527Es4N~%8P3tfoy;|^q?{8 z*2!3Xk0e3%>b6npV)s)BSs5w`5TWU$spo#aHjb zpWFfJn4f{KmdJT1bo4nf8IVxhoP1V*omOQZ>pP5WV*}bps2)&SsTs0@GRElg;HiM4 zy&~D^0?e+{3qmkEyH#?OG`hy8um&|G2*a3+_mGxz%LEKpPW-JWai>Bl8Ub0JA?%UT z#KAr604%R@VX(_M%ueUH1+uJay#G*L)N$$Xk(L$BarlZWBLwrI&z`v*rkKqp->O^9 ziWHi+7GcCD$c^t?V|q6r`V~2@(9M5G3?FI%0+}$9Jg`@Iaf?oJWeaL^7>51Lg0PE# z45>z$elc>h(6tdjH|;Ftw>OD#jjYOUn$>C?i=w&(6?ab5XfK?57SZlBJNy z29Hn+YCG$}@S9`xb*x^IlQSbBo&}?U{aU0O<>+jl$1R6#duB}^Ow&b1R^*~6tnzS5=(5ghribY;6N_K?f=TTb zA?}vz#F%oE2_I=6?F+rPp|iV+*P4@}s~pcU`={sFFAPmMho{%U8c;FXK^bWf(E#{x ztz`7P(o$%+h3n-kAefo0&U?v@X5EsUdf16OwmVT6W@QwBCeKu>P0XcO<=c>8wt3BY zl8ZH{)hY+-i6-TkJ&`3V2_?P6=~O#bpi%HDobeX$5;<|!R;AbSu8NhFeM+m@%ywHh zPi6&t@8e|ERISr&3Iyi*X<0U62Xg0tIlzC5#^W!}EQvAbk_MmtqTtJoTZCKcZ2f20 zjyUzheFma+j{DrtF{yTdyQTtufR(h;z6n_l2ApHib#ysZtd38-$-Z;3;f|8l5S3~# zNGn#f`?%CENvpR^P|VeI#Ed`}i==q-7Hb$=#bWA!2qC5+M^%Cxxa_4hf2ry0=$r&W zXE-YbFM_XjbFuS;Q@zAX8@>PoQ0AacKtAIAmg)&wbgx+;=B>pe>{3v}i5&K-E-=FY znLt~_jfQU4a=&F~3JfQ1z)*de)Isa({852 zwlVW7w_Y$tQm10u3-X`?f(c(R`%a3-hIAEzg!x5c{iY0j@5p^>5}LB!J&0Uwv*xwG z(T}>Zr>HL}Nr!H|W4Up3ML9e~g1ny^HxNKhsNXQ)^-c7KM z5@)wmFR@ryN2+bJFImxr+z#_R+vN+A%Y=rn?^ z8C9A{o{aGnVq8nm6AkvX&Ph@%n=Yr)@&+!?e0rKUsQ?yUUYUrl7mG}=iO()i+$XR- zpl);PY{>WiMj^r=$V0wI3A}rmn23sUvaXD{RB@K^_dzvw1Xen{+aVPoT7RfhfkD$F zJSn?Mrf9Y55*2L})NCb|0 zN6zFKwE&@ekR(C)U>3Vv)#K>r=@Y}YESWL}vMl@}uppJ{Wbl%jlO} z?BN;hhry zMVM!c z$IXK1%go6s#dAwk=$V4vWmnoBS(b&drzK660(Kl(TSUlra zgb+nZXs+GxIHwfVx=$zq%eEeJ8y;dnmg;c@Ta%5$47I*`e_D)lDWra;h5wXXI3<^X9SC|VnG^|F$~t@1J+a$+ z_Ii#?`mHb5oW7w8)IKAnVv}}3L1&NWDshors0PcU0b9^ns}#lc6_EYMcmU4uy#B$N z|3^weK$VNvj8C5jr|_jqXx+^?t@op1bLoe0{9*S0YJKewQUAA!mX2?V*P%v2n95!v zw(AN=TXtIbbATfSUL&8O!z{*Vj3((JwV+_Ds-0JRm|&<8ZR{mI$-;G|`(A3VjuP;n zw=)D=F^lE&o=`Y|CXz}rVz!?Gi+`wl)=kiPPy;*h6+O>I)Rb;7U#QMwDdG!jPTAY(=jawCCaMdkV0tQyot`@MERg{~&CKEu}5wxHHfv%$(0 zDd^ggD2AG?)YtN#*k|8qAfX)%w!OSI=-+?(#vNGIHe<$6fP@1#lYsw#Cl!1IgB`yFK^x1A-eBOLDLL3rS`D zEnRV4mX>=@w}3+!$FFva8Ei7*o`vh16Z;W%tc3Cz#m zzu{7Yq{t>F_tQ_JNr_~I9Gj0Y^pWo7aR#5(3gzt`#3~<=1|2XVdf6q?} z{%3wewvsL4^C^O^bmk9U^WY3J&kSR^9kylp-0uY{G_Y+D@2_)Q6{IFRvg&V`X$Vwt zrJI3{%m2i$eXo@E`|ulJ%V}$%1R$8H3jpYz8^?*Ex1j}%1uy$x1uL(gUB9(IaKW`6 z3LrbbgA4v4_y4Qt%s=G*L+*b_=KoRH<3G3i&+YzmyZ?A58@c{(Xk_@KO#Y8iCMa!J z`sDO<%(EDfBJT=AFwgjRF8e$;Z$$Vl)}yR1OG_3ub5T4c8|BL8$yGJu|p1-ZKS2=wzqOidSYq?)MWy2 zHyN+0lUZx>^_*ZNM;IX&3O5LzB0AO83Mf6!4y6wcC~rY0UJ3gdml1ezFjAErf9&Hc zBZi7DyP>~=KG~kvs;c9XzPA_X^iwK~-}ElL8RH2L4g@$(Y<@^L<15FheQnY6z(X;$R0UthV|F`aLAszA!@8ZGO8h6N$D5hfc<5IT+=8Ur+Er}>-H_!ZXtO))O`2)n7}#SZaq*atapXJo{`U7&$B z=q{EOGMCL6Huh`1^nYMprH$-@2h``&=~%H5cI#ZZ0fOCNMB zT1w7x1YHB;`AgbN3g|>Y&G^0pQ1yWmb~_Wm0f9F32;vw3skiOVEnZu`tCX^YJ?E*692b6FZ?3&L48OUO7dn*IOTs0twz%K=jr2jwC;8J*=%S z-IM>j)0YDU!dhuBf34~onE!j!T42kM5~!TuPAKxqMaDJ&cMf#c{3hpc`ptF#0ONja zYcg#M7uhiJc$@zE9o=XFAnr)f`Js-h00_SEgYrM@_ODf~fNHqMuJ5nAqHACVuifpB ztSQ0*XZWTL?4$Knc4;7hkRQAfw)r=GQ>WjYIX#TMJL38p=&NYCv_8oRa4p*mXpy;7 zdxuD=rx;dSB_As0i57i`Eo zY6|SqViWfc)Z*X&*LzZ+0|Iut^)Sp_?{E477xw}`X#5`yZ(q%%qVJllDpFDoCN-_U zbQ)&B$oQsQgC9EL_?CZn#r)8GB1$=aSB!v0AZ?KOdU5beIV}pM3n}HHCqK_WlK}r$ zLrX|om6#GeBoeq9vY#s+uOsFgdmf;jMN8Pm?`FrIUoAA;xahsvBvcKo+Y%+XE?IOM z_M=906G$uNICnok3Uso(xZ|E&gDOc0S_=&Tda3>sYX1N8PLuzQOn9*rH%@bQ3F7^k zI&Y6&!o!Tz)bm!D-J)leO^#AhM9r(#XM>B898iPDPl$GrHm9j&-{>z?zqN_wzmfZQ zb^tvfqU?(=)-Tb_LEhJ${0Vh*^c}7W?z44riTDOoJyW-@gXnDJa*gD?68If54l2Cp z6eUG|Ca*Jx^yB%h|Lya~DPYS!+X>6$v@!tA#<#YT58S+--JJbg;rju-bhI8$-W$;S zsPP+P@|F?VlzC7e0SVy^UVn@nSxzU=tDk`GmdqMdS(bFG`n+oaD~RX-U}_+2Cbh#{ zd~bSsx@E6Hmc_94KJDK1%lN(JoUZ2=LH`YGky~M`oZvnPxD~fjHwhfoi73iTG%Tor zX$0l1*UFRUIVZ^Z31f3K8MfWQP>0P(Y$jnmflfS~xB2rin&*uGkf>Ip>5#e2B13QB z!i5W?L*yh$5Nb&zHpyDZjvJSKwqJX_!Wj5bxflC4+(T7tm-XL}Uzs>R6by%GX%$|s&}2Dos>8dMhIUyzeynQ)F@iM2Hf&h)62vJJ z4mg1P^A(0Wet@v3Gfvvdq1D3))COzT$*K3gTx10mycVsG`O2HBq$smDV@b>XI_qjc0bb_!yViZLN}VH$)}Qvj244{3NYcI#sLaRmK9Eo!Ctr( zwOBtIhiQ4FoM%%R{jE!H_VOB2e53RS2;llp@cSbK#Jfa^GqCrNgl+fDNbniLeh%qGr|GGRUzxqf!1pN@ZxDZne8)m*oP?wM) z5u^QyLa@Bu4P|-6M`hqXQTW5JDf}X93k4<|u-La>ph%z?A{>xVtNlH{R|G-N1)!o5 zP){>%oZZWB4OhZ&T%OjiuPjBB#!1eKLp@O=7Qun+w1I$Ai#NBRiGQt?HpB(sqNdmT z0KJG!h$~blX&&4&pvU8z69AiKq&xydT7ja-cF&N=-GXj1?K84~Xi4lP9R-UIya*yT zR#v5!A2x)w8|T={kF)0Q+m>k8L;7zwZzEqm1~+j4wqc*({CG=t$%~Q2uUWzGT(E${ut%?Iw#8u3YF`i^8mMlt(+qqH zg%I@YGRf%J*;C>m=6n*Apw4_YB+FcQii-JyVuc>AjG9@6Kmrr!Kx+0L;ouBC{@2<|%4z^5G#~pO%SEnM-!&njwZ}-o%$GeJuTHJ!Td{Ay_+^47 zx(xwoZC-n+UE?`dy80K=cPCVGIsVY7>1K?U{dHyYm1t$mzSN}!r>u}oh_V{Z3CXJ{ z047!BS=a+z#f%a@NG>^e%8S}*>;;z2S+{fwXX(~|FAbU(HHsCeVt<(=fvXNo_4QeZ zGe~1&<^a;>z!16^nBlKp7r#5!+DWT4sLSFx-V=>Pl}gU{vBO@r=;e?02UhJeQUu>9 zpBfnRZm6~O)-7nMqr^G*bEJ8;E?i05b${q`?{tMc2>XYxSaD6^q{om!)Cy<~$l|P_Lqa zKasxwyd`%}+X9*=!Fdj7)8-V@l6L|?u7Q7{**d;4X6CEK1ay{em>|x9y^R;>O4uT( zv$IS!E4S!%PcDj7NiEz&^Bgb>$4V|y^u|{Cs`16z^xK-;IGB6EyVA|RqDK>~ub-6Y z6;7jI*l5+zYcq5k|L30;hyi<}fnQ;`s8z7#eG`5$o&N4?IeOwD9O9ii@8L`W zy0b7vdx+MlW;1fv#PQ{&(lMy_O5-5c!#Im(gTQ9l6y)mt3+k+=kIG_a4O2w~loYbN z4HrRN3SL;S(JO@6o#J z!5=1|=DWXD$N89q?PI5RP&8;a(Pu~lkD z0)Jf;(0#&Mln(K(f6eQhmS**$izy)>q0N8VaJv2B+jVc&*MW@)&vt zkE>RBf3B-4xq%A)@Lenb{Q5Rsn65y!^#ENXm0_VX3(J9WNv>{2Od!O6acxat+jE8E zWuSlhN$Xlv%$$a?w%-fvhTt**3ioE&GG^ZJDvRwy(40;YT?%@Ea33OaAV73f5wik$ zQ~v$!Igy5VU>F4~@-AcYU^5e+D9t| z*H!LGlW8mAv+m3`KkU#ZixdQl)_{syBcQwCBi>*jLsvw;sOe?g5*TmAp3eSU=G=FLSvZB!@F zO6=Tnmi%f9+Ue+wVne>hCh{E1Rp^y7ybbD}{dA5#r&qCUwF54m!_&1{I6DKrSmvkm$^9v#Hf9d9+i(8iu;bqoBR-l zeYUvRraKw(S>jMh%@U8D*u(aWs3up!qH%esdqqZrNR+$2l%|S|SsZ(*`+i9`&Q7sZ zKCmG+>Ou90v+gi<=?YyWjiH0zBV!hTbT-XXV=oegd%4(UHhm&aU{z`bk$Dox)JSe@ z{Kgudz2KT%8Y|11q?EWyfqRc7?S!h{Sz4Pz%h>^3t+2|Uln~rR_JKyHai%_?zY~y= zn?S zs;_Q*Lhpdvh$jkVm)S9}tgYFN#56BUb~>o#(YZF;<)h=9BAt$!A4zBcZqTut1pjPc zud$>yRka?E0ZOW;kaen7Rv#DPT*5+qL=@XqYuY{===iy_?BhvcMrwa(P$WKRulxxvlz_+*&XAwZ94rl2ETz) zZ!^`r5|4NX?JA8Q4A)v-s3@s=OLTu0;$b^85kht4b!};-YDaoVgj$6E!yy0uW|S z_jQ?qjkiC9SuwqXaCA03GNeu{cBQYehVj9vId_%^T-{eR6i%R!cYINb)c#}+fbz_x z-X;IjIP84sf&d^hY|w@c8`$hee??FI>-WWGuz^W7rpXj`XR@EhO%dbsS9kH8EG&N` zvr9;K=hf5RkgoQ?dhbs{oA-IY+AOiB&R_h3dXTT>)!AfbWXV6362(+Ls zwn|{$Vv}>aU6&%X8#<^);+J}da0#@Pu6w7fTyGd&RtoI17+~l$bsi#Xr;spp3vAET zwAAhI=&QGf^Cr}SQrj0+sxEXIv4&E2X!^5kF`g@#7^Mt3yONXcaS5`qva#-x_#m8d z(DhK3-D(DiITHT@d;e6REE#H@PZY>QGu#=SHsh^EfLIkL`+wp06h(E%>66SO7g zU-3-EmW`{zCXO$kn)Mo$atRs{s%4|;&O!RDHgm<)#27VK0#U|kkT|50)Nw?0Axl^D zaTaF#V#Y*hNdDq{vQh66A&jq~BZ4k@3AECgw1D=^@pBC}CVY*RJejnkKXAF2oaQ4t z_D{`uw?=+9w2QvOttz|DDOD&4qE|iE*E6&n)#ehyTplet7n|+gVj?mth|Y>zXl*M} zfRYz#_H}M#fYi71=kOP|X)L^Q@xn#kRns~VR~vbH(r3(d4{{$ZhZgfXYS@xFtPLRz`3;y?KPer!lf4b` z+@oT#$8XXX{Ib5j{-Z>hO0C!lD9DjP^&9XFzg985a*sW0L`L1%pX_T;trgfvMPxmG zhiNjuYqT9lwmA73On=|*2i}2f+Xf!7%?qra>(=kg+-?rVFp>}p-NF983o_o;oHg&dn;~tW;!^{}THhoEUcQZ2Eri2x-ifb&$1E@X$ z3-vj(()CF$@3K-mWBYRKjw5kM(oVFw^mnZ_slxm`9&R%4%}=O}S)*NU+i>^q-=Avk zG^!%rA<5KUte$4PIk&^;TIeObdqXJNQXQiS@~%v^#cgCdNi~iYN-r>*37vgz z9atpN4ljX@tLx9QuV-3YF!t1AO|KAihjyMM-# z8xY%%?1!rU&4=5rCY0r9LQ(W&xNM$DjR_@MUxUNt17eIGXN}<*2)}ViwRKu4Egj%2 zds?WegO+IU&R#^|oglnmu1Dz^zI&({a&yP0L3a)BvSH?31?i4uCEK3LvuGRJ;LFt| zUx5PN4spXaoPXVsUX%Ouc}b0Uow=^3ey-J4F#NNLEF#$=u$$&bjPEteBc%jg*@43^ z*Cs7=c;>Nmx(Pk<1Yre2ADM5y(?K~Ut&8bEm@?Bu9W+;<&HKA-ZyB0eVvr2IXodOp5*s}(> zU8HxK;?bx7>lX0g2)Q7p%jS3RFTUY!)5OJ~#DPxtFx*uv|HLFBZ58Xz}c( z2%XUH6Pu>W=Q9Ox$Ub{{=HRor7WDjafYWm*dtd%ghnP>QinIDgjcH5atNxkk!4Ge4 zO`Em9Ls8twXr2(r&?c#;gi;#Rr*yNnw?ey@6qoNzw@nDV3Wis2*RP0J`fl$-QN+Ma zcGTE8Z>h0vNxcYyju-=0rjo(8JUyuz;@SNk%ewJR)29hHCYbo{h@6@f$RX%&m9eSE z6FV|mNWqi1<;dmitmSWwhS*xzw8nk)pacPI@Moskd2(5bwo=G=oT=@A(vl_WaRxhR z;9})TJ*M=8wzWvaaFycq+%-dZ{s(*S9o1yo#fyH5%2)s!GD=fXQ4z4wOPoPPMTm-u ziVzhQkrJs1gd`#=fJ9c2{T2q^!vPj>Q(P7jN>&mHGwZ=>vMU3p>IVu5TNyZUvE;W%+<*|l z)Wge15)@u_K@bzU>rFmu6X0jJJ0TL5kZN!d zL9V#B*9e{v2qWi;Er73jTGcw0X@Y{j4J5}+`NzL4gGQDP9N|vPOCX7zAtA$RYH3$u ze9Gv`bUPlW14{tt=rm?Sne!XEd&D>&qqr4XL^oIo1y*7xwDPkw6zoTb5`UM%Ot5?}QpT(2rG)B!Y_v*tvQLUI z*zgFS4vSE26psn5`!RI_9ZbmTJ`S@Slx$dl?s8X412KrbQL6_66JB<$yW*`A~uOeL6ezoQ=0a=%&au>*zOFi?5y_~^W>>o?OSIf zJ^l9)Oc^HPY7Lxr(HQ*P6S?C%_~NmFHS0Ftjo)YO!ZnBj-N+nZg@d&`2ssmBF#|{X z?Vv+oLFc87R)f}LXV172GISVBkyl?3kz<`PMzag_bQHBR72goWI5eS~2~jCjr9YIk2XmZ@KY1-k%NFM(-@>zyWto zcpte}1wyv}srSx(3D8%~nVE%)s>hC$r&Ko$#;ik>xWn!>F(lGte&bTbrlHq{Ws?Pt zeSW|NIwpRQQ3=!Zbh%?CEQ~7_vqDFrHb90g%=$@Px@))k%nDz*eg%Yd!iWQmVxx zhuYIIQMOEwLo6ab0g;c3$^(N%l3V5*D_q?g3;8{&7SJ`%p6<>C_yg;)*z_T`k-bi9~Q~VT#Q`ueM($D zzVp_d@IF>eowO5E4SCrowlMtCu4b=HB!BK6*go!u;reZ!I;Na&Uvt#A?Lg_zLjQi zUam)3jc=9fjX#*>M*^>-F8+m1ebptj__f9l??Y*Tw4ZH*n{=N{2HySF+;lq}ww%|H zzJSw^bZ$=J`O{(Gi+*$D`jo#i-3)iS5P0Jxm%V;4#cnY@#iVfKEbnLEvzQq#F9WEy zJNh00BF5ovVCBEnStP8)TR^WLm{nQ0xleb-TeAQ1sj)zP;d90Din8!0FoVr-7`^$= z+0qGfSn>;9De=or*;Y|DKP&v@Etuji&iNx;HvX0BEWc#l{FK$p@#=fOnz~!Cg{Kv5 z7jl#@(My_dm29&L=p3I3HLB2K9LcIPb3T0Eh3o~u+N@`y3%v8L_sUty^4K<8F#iclT@I|h=@Q-ks1JnwIxB&pB}btPK>_7~NBF`Qzh&5q-2> zD+G;9{8bw=@KFteY}pQ?@GGM^rbU6nk}75aQ5HJhzUN`igm@;AF~S5A8CT;Nw&by(9Xs7?AMZf8qHuNj%7 z^Dvi@s>O8bXmq!gQtdj)5w5F3fwJXgK?LYUpk7P@v71}K^jT{0_QmG82H}?gO!)zl z%w9CQ4PrmgvL!(>oRF=y6<8zq-)kfY&c*`0psBtb%kA~r{NLg<*B36BZPIV&(eh+|;Y;3pgIfTDqMIdjcC#if=0N;U7+hofEu@66~4t^ZyBRU9lXmV6hpl z_-MXPVb3Y9^0P$;uhSIl*8KqM^(hXxfG#*M;QZ&rg*0RQ68gO6a$sc_4(t42VWq&; zsqA&XTXWx%2hDe#DlBfU`}I|z$_|eo@xPpayC=+h1zzD$Sab(>J6!RYf=(ejZ1cna zuJeAoZHJD`tFU;he+%}XZ97k>yDsGX=lX@T7OS^uD}J!IT(+%;D;6E#Dz9I7@Ooty zuo|TY&83R*dw&E{)dMcf@}ghp^U}%>dBaul3V($~pA(cnKKP?;kbbjUvuzFVS*w42 zrGy1mW3=X)bb!#qxVGfbIlr2`fXP!NFuH_Yx)%x*CXp>`p9=<;aF)kB|2V&} zLOg&C4J_@2IXSq#6L_xw)Y_U5)agbkU|mhZy%78>=u|q*TmFN%4oT~aV(D)-jrz_bYiG#34OyBo0x^y!-1ZxrdCKU1ALUn zRLOY$yyv5xka*$(9bZu}^6pNybJ9ucX4CK2`1c1O-2@EI5sqC+NS6^~Yo&OGmkg;2^KR$lC9M;ioWo#VpI$3Ix!8ngPkZ1y3|L{RE;p1gW2S+RtQ-eCa6NKJqlMjq99bz^Hi=VJ4p7jyI>z~V*LYk0l5#mc@+qk;fAKdg`Bgcx%4&P<@^01 zOiOJ!9ucZw@}8`QH@RKPoRiN5PSJ(H`L_hax06XpH@lH0D@osv(|ElPes1Rua_LWkIuUbl=>W;f z0tl)(qo-Q&Co0N3i{35$LEydb!sDCWR*NffyMWMl@bcW;C!nWEz4dS`gmZS>>z3e6 z+d=664ao}cPK(bGn-pYJAOZsRrl6{yvNA#9;8F?BDNP+(8cZXdq0D81?Yp^;@{3nl zeG6+t8T+voZ-~&eK~Xz)(V|7KUCX*%s;(6O^5!s?*mGB%dfb+@$7Q@sZ^K;r!;JI` z=a-F2o&~(~t;s;p{X0K56e%v?6y3&N{P7uha2G@FJ`x5Qm8Zmkre|SEXKZ5m!S&q7 zo)C(-^>V>x<&W|!=E`Hv^@ zcWj^kd-rjM#ZH1y$u_N0#bOg5wcx+4O`-GCql?a0au#xoZu54|(REm=>eh-fplOez zw#7ES*7tu!kQ9_1bbt-6>8T6oCk10W8v(Z97k=u##dO|;qEqUOl~Xf>M?6_(zveF` z`u!=33lo({(p_N3u6q~!>-UZR_rpHQ5+Ji5`2`oF^3{|8ha|6BBz6Tl$+o24n{%L_ zSkRsH`?-Bu1)PjZJelIv=cb9$~37;>E{azMWpIr6RG zoLsRFOMzo$;GK8jH@hpWrgYW^oK}hfy}Z$xn=@^D{m0XP01<5cqN~LE3dHqMpZowD z{u+E|S&!ZviIrDx1Qa$}@I_(QixzR7UVZOisXalJ5=J|Yg^v5+&RJUzEr*W26~ zJzD60{RsOC#07R2{~;E&%e!zOUUmL9=~%pT(?tsM_&Rmw2I0rvh)(+Fvl-8tJtu#zZI6EuBmCCiR3-t_xV%G zMqnd->JD*IUrJC$owo!5P^oh!(#X4{YE8ByjvnM3B6?1F>f=R_ z`M52kmw8#GE@GwyeAbt;A{!@bX*{qoNKUxQL_ElB9FH|1y&^FgQ6{quw^#Cv)`(xV z7Gm}l8P_KW_A+-L2RCWw$od{|O1Ho{(>E2(Z%>)hm@jsmPg7f#o)kZsen%T}jQ45MxRa64H2ppVVGiE^-CO+n zz<)M#+&#V)pk0;di2lylP~e25+ppPi2*)69vKj%P7v#HlGmy;2Zo&nbggA(2^B~I?*R#l!-#*n5PI{fv_JqG2GHEEfz;+ zCX5=#PZ22-0UUeXrem_MRz04ogoG!8q+-gVCb_{!)vh@`&x#!Zbx&sk8waS~4p((s znFZk(!%JN!CIadU(LVCx+SY4aB12hVpBc(_gjof-9OM)#(dBQMXUt{ybXbX<;wD$j zaDyI-a|_P{6#x2=1SliW6@>GpZmByTyXM*&bnVfwAv=apz>As=tL5M^vSlw(vm4cW zZJJTq!EZ_fsvl})KWP2`d2lF6_qpHIi;4g-CYS<@f-_lT3vI^^waNG z&DVz~w3#25E%{>cLpH-rs@M}jAc?lNy$L;lTELNv*=jzWnSa?*vJx8w>QSIJc$d{1 zvmRm*^#x3GO~OKG1)>9eZI2{xRfTvK)^u3|_h>Ez8V^-Rw;8yx>=NqjUsB(*^J=Y3 zo*p8}K;&~v+43qO>#_Q1@X^*;m&_Bw%*yEBR<;4ok#sAjN1^(|vsM0j1NYR_)^8LW zK}~l{*#H84vf~zR`Yb@|>bwQx7eXW|e41B5`f0T$O~J*>)}i3M)E&GcEJ;pG9>I%cGN-Pb*@fBVgk{x zq}wH*dG+6htlVp+P9JpYi=p|vv_hO46&w)4AZaFv#3o*wG_|$Ca>*1d18CxX_70c- zlC~Pp?B9KsO_n^9Tnrx&Gvolg4uG)kb+z_=+uL?|eR_n?p41|S*G3n#Eu?e^EA_Z6 ztX+r_g&UF!q5P)wK@ zsdZY%cw1oT66A>_au=hCSMSbRFjC4U{qbs7B%r$Jcud=0k`oQgpu2tLi( zt6g8V%eRxV0iJ;4@iR3a$p$bCOELL`I?rs3o_o~e>LDZ7LtJ^~G}yESwxEfzDT+-Ia z$4BgdA{nXrH2i)(7_!?$Dlk;Mx{QUfgqvC!scTAK2D9?BN;GRuVOc(mZnrK^-tzHkFuI zRJW^40~nwn7q{QP~or2lVB~1qP+J0x=i3vP_ z??nJmhBbE6sMe@Vl}|A*xf>uU7$R!=Sg8{VG+?8OPHHXTSIY`MOYRleD)$X+=lh+X zPLT0Mocg4x;XaDBzp3VQ`2fosl$>B4=*t^3%?TcBYC$0D+}EUm28(IdQv}8Y|FgRi zE(eaL3Yh6D8=3AgGuX(ii8z{tk69|#8gs~bz-n8K1rH%^!?I=PV;G(9q71JYqFY-5 znBZYK|BnYTQBkg@k0Q-r&s2-Z+IwXeDXNp{?9wqLrWX`3%13hd>FW6%oWRVL0% zf^)3g3U3@Cu=O%YHK4GsaL6R3+3m^q&D@42-)_V7ZWnsX(ME*JLQdd{GO`#zSC@fs zH55xX)3Lb9DS5q^vll8~wH|JRNcu;I@n9?zx$)tFb{NPJy( z{5kF}zkkv_AMxYo&NGB)z3>d(C8-m-QcYL2(1dZ=AA6FC7cT+VC&zr`}_w9O& zip6%I=_clgszBk5TKx&SK`{?=La0-zX5iu*h;CmxN3zdmyj;2RS9hPV22XZQG6=!m z?%`Ri z)9xm6LTxaU)DO(M3(z2roDmI$>3L2xcUzelN>en-$ohw6r2B(Kmjp*WrH+yGno*06 zQoreKkYr5t>GS95>!7whQ*LB^E9)4j^KR<#oP)B8r4i?x5NHENUcWx*!yQypm9?HOg~-dY zmz8RUNkVB3xm%hUdPm%yMgqlx%tOsc5mEB%>lv$LYz}N?KJ?#r)_=kt9-48zy}mgi zi#QWgTWmSN1Py+jI|xJrS{VU;(2%};QQIXRzuu7)JJ^tt)N*Ciz|hY|k>l|^Loz{* zP|DOD)O$|;+_HH;E=mmD6>acAd*9g{0{{SxwuXExEA4YrRLZpBsrC&#S%-&kKjrc{ zW?k_+MQMgRiaVw0x>%Qu9Iza9wqpZ?AkCAnJwNbzB51V%k0I|%=D(nxMyvXl{3-1N z0H1yLFc`)XR<`y8I?x=RfCxZedh8|+?tqXULy;4=Lzl)1Ty{R9W8`~;*GRY^U|JA4 z0THg9%vs^;BcFJ^N0Iu}G3PBtGCd(JT}B^JFeO{Ha`M~ZA(x4-38NmulG~hwL8Q5R z?dNGnND^j_v}|Ui<^EM#SU_59Fx=?_9&%mKu9Qh>KDFdNdUs!0fA%h#>QhBJp!1)egWxOh&W5#D%XD!eM;xmIa)lL{E!WC4io>S@JmIVLE}6 zj}JWMQ{smx1)%@d|3$=Nl%7MB)*O|(l&q7~I_Y~?@m~QspT5$r5s{iuVUzq3=!0)y zjSib&X|Byt2QUPT@-yH=o%n~A~X-$1}?@UW2XNY+g$CVA1K)2>4C z8yn2iMa=9!yeoBdSR+9AYViCEK`Qjlbexm4Cx?+81vL)f8sJiMt29)4tH(P3S)LQ#O#0jmD z|4Q$EiA=9zW`vUYO(?7JWC9K>u2pL~?d*MO!=omB96eDP*|5~HL~UARZhV=Gs+;O# z6)=|-vMZ3k$#&NIQHEITT*-H;6ycp%^Zr5Vh?Y@e1G#7NY-WQ>blif_fvkig>mB~r zxjv8{DcgS$d+Opt`}+x58Fv2xNKwU>Axu@ePK6#GB&bux(Vv8<`dPq9eKov^2*U=A zIP#c<>=DD+tR;|Z&=X1t^^65;;(K57R}vVHfFe9}e zLIO#pg5Eg}S<;L{M*QlK0Zbw-jXLcvnCKPErC#&OuOFR|+5sPWJg&j3BGe9Q7O>3?47`KZr zOuc%Yi{hYkSR9zPXBE5E0hpH-fc4B^6o$jh(B<2B)C1^;wBbIcP>U`g3%J%3ioB+e zB-gc(b|+KWT7!-l^n~{(J*;>{fKX>26yN1!B%~ zEeIDxVV_b<1+bBYPO{d)r#->Jq+0z`#2c(+{-oYj6fuvlIHCAh<|5nIZ%@0~@C!Z{c4)BN+fg2D-TWs%* z4jhqA%*z}=YCXZGVM3jse)MD`G2{Hn%7~_93HarxQ%PXt>^_BU#Q?1Eu2k(SIkOtr zhO*%og6aK{G*0Kv+%i1TVIfEE(v+Yq^V{JXulJW7Udol}WUK7N>zfQQF~%U5>4Z2Z zqlDI}7oiMxpWhHcpTe*JtOPDDGD-l5}8M&&`4o#G%kc1`{A*aVQrBv;EUz(V4cX(=D4C$bC zfnRChAd|4Q5y8-$A-lzcU+_9IVJ>&`f>-4F%=z;^p55xsinN0Lco0zHBRwJ`>;BS2aGKiA+ zTdp~~qHKBHYJy3B9BnL{b&~6YRTFl|xK)~dAM|~LJMFieb2^bw9(o|Mz?pf?dH$FK zkoL{z#kIK0Ux769IoHh1Ae&u$5_U~qbJ;9w?kRAREwA%CpQJEcB_y_+3>Hh@de>0j zNiZv`?XIEOt%}Z0!3p2kT00qA`oe{4ejNymQ%T!%tCn90Hl{-nDKKz2Ijn$`8XKMx=-y)LVZ(~Bkh`pRe{JY*$0rZt%j zcP5_tm^7hpS9|=O3_BqfI}-DPTQ$nGF)xD`vkk40Zv#IE2V)&Mn$|+2I0V#0({ml3 zoH$SdLVq}RE*9cw)`6gjdK%>GKJ>_LX>jd67~&q9@m`y~l5FT17pg3d2)%;Zj<&p~ zH83oYCtxR_H4}Ms46jddw_C{)(i`WLqSiQMvl>UH~0qt*3yfO>o6p1|(aaX*?rmAFBP% z?7GDSS%>bGyT6&Nh>CHqjcdsqD6I8%JhDT^BA-6L!WwWIqG;w20@4fRqR8GGUn_ml zX*-wMWn^q*kdT$bAX2WGhqmUnoN5~@tZiL+36uhrj$?#cgIC6$Mn3j{By)a~vJdFx zoc5u_eWP{>hX*HWZrRBxd8hwEJ1C2p{fNuBs8`rmQZb8|W6w1hiPIY%Y9#T<>R}O2*_AuND~mYf*eX!?ZoG)KnF~iC1Ei7C2O070hCsB zdBRHwQAvJ+5tDdw^YS=a%$3ktkP723TtxXdE}|7&?N7jIn2I+kJV_VJR5JGv2{KN* zRiIsqF&yjywMQE`nRAk{AM~9DW&f+huiS%V9g$tI(gPjKg1J1439A|Svz*(1@6#OAA8d5R*+XSXB;>H zc|F5!eYgRx776sjElu~M)|)sDy(w$-Sxg^cYv#z~050E%JPv+vZV`qB6hm1j*^-p6 zg(5eAu9n9(_O~GV~-^}67t$%wOa84C4U)1mqweA1J^6@{r>VNY(_s@lXp^?26xIa4uf!OTFu&gEVH2l8eAAPPItf1hIQ z8HaHf^?ZP7beadsdi~Eq(8TG{rw5&c(iOIZtV!NIU5)%&&Px#AzF)`Ol6rpZ{&Kwg z<2PbLw+r+0M^>4CGFI-2BD6x(2CY7VX{5MW9-5;Ss`0z#cVT( zGbO`0(7cJy^smsoLTu6+fE}gtFLu-i0*+xlR!j|d&J_>oKro9GnSmEh+09Oa0Bax8 z3hU{K4v;8<9>;g(?r=eV=1?IyWjT|*0BLIK5I1$v6(!VWICkDSMXfw>rFLU!+{eE` zk(y^3e?-741$V!I$hRP;VzC*1o-uZ)Npj2583vc`zt>0??>K@)N?FA)t++uI(X(3R zN9X2Zw4N;my30pU8*5S@LEU$!8kjE0GV!o_l(X% z=sYzHRkR)8rOn_o0q$H@2eHEnk{0`gL_mjB!9dq^5T>RrC{4^K;T+Kht#ZPnb15E!HT|nX*a$q+vM%^X#Vfe z%h$KczqHD<==}>;IOt&6^W>AH`8n}k=uzpFF-oD~@7x^KRFo?>m43xV9t1SP*yvr# zy2?s7G_@Qn>3kO`4QQEN9|E-Z_O}HFqRA_){LJJ;cCp*x(tanB7hzEaA~Ab8KJ&M; z;gHXZI8tR((}xctb1L=(f4Cg>cjt~wdy}(|BCRJTJ#O5f_fv^Kc>5>bk9&6{n(Tbk zU_J8S6T<(_-|Q*rgcH$xhIOKA*dsPt4veR=D;vvo?+D1RcWy-dE9hL575pO-C3{6N zTSUrOYFN4{MV`Nu+H}RnI;dUv8|w?Xj*r zQ>1?S#O+THg>2girC;a(TB)>T+i%yt{-bGI;4jm*rt-)q(2yeoC^{5Xxq`*5R9;L7 zs<3!}`C8sSZ?2ZQx*axzrcQ+#kT%vQnLIjpu#0{<&wWgQluA7SRHL160HA@*$@zt;RA0 z8}Ok*F+EHY7H1UE?eg+U(dM@q73$h^a|AQF44SFGEgv=tpi+xngHtGVnN9+eH}RTXxZ2gX6`H>(gd*A zu&LLcuCKajM$SEV{%alI^|15sK5pvmp3Wyg6B7U3bEz``FG{4k9N&r+yn!26AWnO| zG?@*a1zvlh1t@{#``EQg)z499rd%aDfconARE*TpMb@d;^w5NcXG7k&&xTIS=ZbwvHZd8E%${-xCS-7`IIFD#jmCW z;0>O2lOhe_Sdb@WHaP>xacIt?za8?@Ju{Y z$+r60VXgPS`sw|Tde#A*3h8cwh;%o4a6sY*xgf_a5}Y6rH7$7_xMw>YtL~IF*D3{I zXG&Wp->^wqctINy#}5-|B^aN5`z$>#fYlVx?;Pcz2JHq2SWXfhqq$V7oijwoyWZcx zFN57yMnSl$V@bW70PeZic^ccgaXg8^EZl8Q=ZxU!WcTJzQa3aM$2U2N8U8pUDgw zp=`rf=9_l~q7?TPA>VcBe#az{EvBQkk7+BKjSYbCy~cIjiAIS;2_TFyBa~P0ec#JPO&+c1J0UsVTsmhSnL5+0+NWV2e+=}x z%w5<)oH9bQ^bPS%u>OhjIy0PlUstz4@)^^yWpIsSabRNib@tL zi4uBPfZ>rSt*J&sf67Y7jAyaIu4d0zg2Jzsz;!8|I>U&Xp;7dABgYCjmRfk&hYE2_ z)|=d%7r5@R_$^ry8|Qiz+8SV4Rr^IPyt_>V*Cs!dy&53W^c_{2RtoM6;JLM*$9}F zTQDI`)yjMYp0f+Rkp_ww?z9z6C`RPCgjx$9_3-657{fQ{bfB!9wC7{prVUM-Zw_tT zxcP+Y{@+fnejEPBp9FTtLe&Ec$p(`B2h^gkROJO7+ws@49iCNd7VLk$dd1skzYlHR zMBUA^VBXb>`B+zP_ED)M22UBev&SF9@lRz2VBGuKBoh*@LRL$U@C znL(Ym!KnTf5jAhl=C7;qgCj?Mp@@;BEtV}a!wCsq`^-1sRn+H?{ep*B z!b~07U^`Lctsdj=IN9)Nyzej-$?{aI;uqZ3HpA*#`~F5r%i_P*jOcqQUY7C5>QWM= zZsK?H;dG5zC)P6p7{pa&z7+4=eNrQF2{7ahhuR-H{Ju}!5TKnE6eSFP65B^;YN7E{ zrE#e<6V-Brw#|pbU_S1C7eWpXWaQiSr7cDDW*~GK`oyt=I^*O7gW#v5s~n!LK;vnp zt#8WC{aYGuGk}3~&TsxIFI(tP_52kuR!lT#@_qva?ONrSUD^Z<6X& zLR%y{!)fJZgGAg>Z~F%Hz>Df_QPPRJX|hX9M4u6F_FSG->#gl9b^GmlZmzlQRKw}^=~9cbzPtS2 zYfjT0jkqX!QKjz$b&*@ojrTeZElrmLWl8?t|CZgS#lUQ=mqvz9w|F3&`c@E4D?xWH(pLpR;Q@Es8} zZQ-Svbl+>1?|U5Bx?7N6-(#+J|txm90huIrL~Ua{Vt zUWz4GxT?h};J$uu0Ty-fsoR)x8E+vl@G2#|yANajD}^3%csSS=?Q}lS+37qcCS{`1XIU8ATjcXXlQL8K%%)}KhPukn zYVN*M3`HCa6?DtmHd#@Ql@dT{!8yQWuold&br$LWG3NYE>3fk>+V=^=cW84K=~34H zk!cm`i)S(k<5lEyigXiv@WsBfHMp@h@$>tAor+3(gYYD2CL!8}zxLy0I-|5tRFID# zPabSy^BT{9vJY!><}Q~H-~q%07u)7AjF zh7V$HJ{$xt^&tk)w~=m~FD6i#?)tp;Hlb6$pfX7NPaWzc58h#N_5Eg^GiMkQ?P(e@ z`@TIlbAUzw3;g8(Eu;%`w=5+%o$4lRf5(<+WbNUy9h{*g$!J)c{=!aqbdWD5K1d-- zQ)T$!YD<;(^P1lX;I1lxDhF1e0+9UWTLF<_=4Z%)<%Ab;SI7d;m9Gmgf)z1b$O?9t+ zCKugJ$F?rJ6pTuehAnd8dp53yNiDWRUt=H6-RPiL{9iPOYs)Ee}uXgRp zsXuHnpHt&yzEYkPl)`+5y5Z|2+P%Kl$bGWv^R}DNNTn0M$c6kX<*v>T_Okt>3@O*T z&^)-TJ+#Qn%9z{W8Qf)U_rRaFix<+H#z?2{UiCnYqUiuRwyfH)DMzY?f_`Qfp&UfJ z2l6Su{t=1}#tEN;9OS<)`?qBR8g8orcii;MQJ4|!Ye2M(Tb2-<4s;V<1EO69h_;~> zqI=~9l4`4-eQ<)&XG>p*s>l+l&zlVM!106S#h_>Ph4R#()udfxTN~z$Iuea_e2xI~ z$J7-wts5{$kjY7Ip};h0duiqBAZGj~xj&14u#NUcQ_h>*#4?y*aa1Yv_Hs1xJKB z#<^B^1mvDZV{kg$woU-k%EmiWrw@gUU-s81w!iKa{jR0U__CPN;Kl#bM=NQRspAOZ zKuB*$zVOg)X>R7SYP}PkF)@azsjjgle1nmDgXFO@z_7BY+6)~rUAI;)Afupbqlzzxx2(Y*kn2o zdZz6cYKT-_ErK|p!DbB2Yxc}^~ zx0h{%6B+j%m4E$1+SJf*n5O1PG$B08GwWCjXCgX!)6VLXG(JFf;`c}e+0708`meG- zwl#(pl~J$qyS8i+h#MfL{Rv@%B)jU@%kY>-K^d6G@7Pa0^3n8mH8Rkv#ZKUF*PNjs~U1pZj$}yL1Z$={#)SR9${;ev!o8Y*5)QdrEUFdR^~a{MFjy5El6cmVmJ43@pp|W@ z0RkKPTVAdsYk1D*kO)^UzH|>nRk+h>T^jX>>qQ$qP}YqU$>!f>yPu!xP7&Y4BoMEC zu;^0L&C_^*W~z{(+hVY|*MQ{)UEV|tx`3`bf*a4|k5X0zfeY}~vxC~lGhQu7;hQ{8 zbf+MonDK0Em1qPD*|6M~=>n??qo95JUAtA9f$60JHxu=Hdr}#Up$a4_WbGC9T4|Pg zQxM0u4+MA^hISU^H5@LA;c7G9QnRe8WE;HRBG~R=Ux>1Tk_u#d=WE;U4S8GRCkMwiFo?yA;MO8ti*lN`%@G3(@pMSzpt?kS;JJCld z@iniN@%}f6{?{Kq7GGw%u*~?@qcwzwkMOLW?UYk1fc`_mL!nl8XeF8ssI^QU@uj=q zvdnsRjb;H|U#BBy88|a89UaP2~Ayu$*bv+Y8uWin5 zC>M_?D!+F;A!p)OiF`e5{gmx>*JY-cB2Ul&TUhcc0*1QSJLcgu-Stk3?hM_zj^|4J z%lGMcn7~%B_JPxwY1c1h49lFjn*9Q!cK7;n3vGtHV688!{z|sB!BH!`c47!zTb55Z z9S{fV zk9JE9M;=xOW6w0VZAgWwVS-MLJTsyofN-NXxYMBB&k8Uam&H9Z?nSZQSPNYoyLK1a z?70UKhc81&epQFdxnOFqDuYBK38p&+86`$`K8=rStRYD&oaiBPQqoI|>91JE6;lVW zz73sUnU1(_LZN_EI+0r=LnX)hUMg7LGUH-7HwHZBY$e>^xlNf2KY4=XX!KKd7d-c4?~| zE-NF&2icOOx^@vAC0H1ngM`-R!9@!PXO6q+hRX7e94pXpY#v4gc3t^@Jp<&zb z;xeAJP>(CCxs?NNF(JPrkWdb$IUpg&9)(e z#b;<@5F9P)P5mG(tciTO%~4uqr*?oomQu;CJaI-s1sT#5ErH2hjMVV)#MK&%)DST9 zf<;7Hp905{qr7cYc5w;8zaCEttm#BGwO%V}!e3Pm5;#2fp)XE_+;|F8`!H(siN5&l>nckj0j$p^)K^~GB?ff$K0a+e++-tYz zy-vWbYMmfQ=JJf>(udMI&cAQBo8=wA0C%5U`qzlDrMcW<)zLK}SoT{BhI83`j-?ap z8Zp%O{_6h08^L|6&ka7G$K^0ws|B30K_oV z-k^INljUXU2^R*(ajT!X#*3~p65oy4dRwmar=rb%rTpgZ^E?_B%)A-;qTB)_FUVd~ zGY($s)#ZfhxlF$oTBT1L{}gE3mz!khQx`XqL(H~N7P>NaOJCI7B`YE`4T)lW*g;b| zX0SH|Wb4$!~ zyom{ybfNl3M=}q{HufxL-M_6sG}4(!(B0fefu5VD6mES5Z8;hMu6IMtE^+)TuXQd) zfm65Bn(vz8eYDzu4A@H^vj4P(Jo??JF39UJWNeTyKx<$Su7+rclTzUampt=7l+yVC zZ(6wa>9u}Zg}jJ-Oav_+@2$x-3eKEd>yguCyg8yu4e$3clKXK!CzO2`@TGULh^a-N zZ@dHr_!GPGEh3s2q@Z)5!!J^QJtrzsztUGZfFBWku!`vI_Kr|5dz<7xfHCWmp13X@ zXS|9CPDSKJ>vSiucWP*NdG2h{w0YDw0bzX7w3WTUjbEuy^=S2%&F>LzYm=WEj;3k! zab5|9`$0}yxDC7k%}EI8El3L|e5@!EKm_kUe!M=~W`#71M#MAeqxI3PtdE%u4@eI@ zs+uf~8^K|M{oChw7)KTWw{0x&cVoM9HY*I4@!`1uK^IQlt+fTAeovl6tAtY6<92y@ zVS;JlX+8%}6-K`@3<7s_hklf>uLRk*)+Keu)zRR43x8XCPq?(KueW*o6)$phVu|0U zWLP-UrMCnOr{AMtZnd9w%ew&t87O{+&cjE7_&at%k&JdoQBp}T0dFDd8F{!j1j95n ztCv z8F$>Myj$yyW4J!gA3kESnd=$|o-U_Yp6!;FGybpku00y+^o?uWNup4>?yqDuB9;3k z+LcIYQ6u+AHzA1`x29oRiW%)9+7Pu!L_%(Zv0+kji4bN?#Ee{Krea*jzQfkEG(Dba=5iG^l>|8D$4!kJ)N6vTh?iKb|8ZQLxN=A`n@t7jV&{aUw#l0m*e8? zE1-sfi%NBGiQ)TV&h6lSk`JT)4QFeyS=m|yKu0-W4Y0*abvSU135YTK{Q$L|w^tSW zf2vp~!7Nu2N&8Gos-yp+gy;15+xCvWGO+?rYaUpvfk~zk+9+lkj*nF)D?i~<_MxxD z;o>xcm?6}Kv$?fu^Fs`lVu$`^GTvS1ikm(?waGepZegcocm|VYMO3Wrq-LQnW3zv7 zGCtutaaaVemXJU1!a2y*@`1e3&)*2?mtWj69(=?{6XM;9TQAb9#Rnx3Zkwaj1^m}x zkoKOn*Lmox*YS7{VH;5-6>7=PT+Qq(do++bLIx>2cWVoN+ZgxGVTWjkCu&z`r6 zMI`?UMxHvLAmnD5A zG_1JiQr;u^ldK=2mA6DhRQsm9*~n`c0*00z9v-`JChU60i}ZUlpQgGS!3B{$F#dcQ+XqqwR5E^|fe7MBl z($DwOtg4)z-%%i-;a>%u?g=cUefWTrtX_&qX{TBw`Kss$e(?fdscbW0vCoog>wh3B zB=_EqtDmK|`1EHI!XmFpqinA}fhmjP5qys%ayl!^-u;rzmG9$B_OX+|I`n`xb}U_w zj=Guu z^(Z-wSRg=d#&5bP8I)XxY+`4noJ}rQ$FT6O(sz7(GFU5+KISZ@nWdNrUi_8?5XRxC zojhI)FMd?q`aDTI+X1S}*H%F=*_ZzT!tD4qSHew@EcgJ-d{WSU2UL~z&tP+j^p--& zsmLUD3KfExcSio=#EMi;g2K^3j_RKPY5t|EUsd-%iu6@=uc~|1nS8B!Hp^J`-Q1h< z|GsUmI+Imrvg%C!rOxCDF+I!zfk1}S7A@=JYHA|)Btm?jri8*4`S}AnwTTTh+QC%x zB)*Zq*@$XsA-UW1+uDm{0}E>PaE#>M4@V3qY4_%s7OwZt#VtLaruW`ikLnh)b?U8@1+=J7&& z?b@}CMZ~+C#3x-hqHEZ_<)e-A_seqBT4vi%ShSvwMoJ~zD}t3`Sb6TO#`2N)Zfx4` zbht{}n>R8><0XOld*;otZDH}GV5}t_?{z`G%O^LcV zeb2G{!9H1yay<2TgC*XD6sN#BGjf zAK14mctjuG1Zd^oI~f!vK}^oO5H^a8f%-=I8m4+M&l~^>wW#88q^L zN9L5I{8U!6v!HVBSK7qH^*Zy3!;PU`Z1NkDV&F*g^{K7_mD8>1iYDp;dJqwxjW;H< z4pWjBX5Jq}Rn$ha7iejwCPG5OUX#InjZI5a*HhBjnww#CX;qy=qF^So@16ZBba46~ z7M<>BsE$fPM0x_-HvqYD^KIHpim<=&iKg9m#qr7CFzY@F9N)%h30#*Yhe!|UdK*yZ zuN9ZKbn$S1Xy3%kszk1Gij}hKd<&Sof62)UWfQv09uhK^KYc2WW~G%6l8W>#J4+=n zG7@+uFJ;KV#4!*FBC;m87?u&jBwQWic_~0Mj~n75_?#J70j^IDRk$vwn};su3={&w zzF|>=nz*Zku+7rS5VoY!wgx=2&hf|GU~w2d_o?S(@>dGr>kmRN;QQQ+x+)&osx$oH zIZY7jvHolV2*D5E^y%0eHeP|a927*1CZoS^rj0q@Q6d#{r%pKVY|G@aV^T{d#blblu00S3l`f$h~R731KTpBXP$oyJ7 zlvFAVf|$$PJbVbAlcvNXSE*>$z8`FC=%x|ES|g_8>*_LvkB3O$d$aHO$~ya%2IcSZ zIjs;hliA+gT_t3iWywp_0<}IA`CFS^oQ=Pslo=d2HDiT%xsIM(Jr@)(rGr*LYq1M9 z0@me*VsNiP*X_lO1GH+QUsdCMBw1VcPO;Un%?k(;1kfmhFuj&q1I^0MANA>Fat*&* zEEajxnFKU=Cucw1e!qyM>r7O4UvO!EZ@-(t9vK~o9l|Z0YEEsJi=7j`q2$nB538<@ zD4OW6z;VccXvOn>Wq3{pW>%Xp^3LT{HUKOHoiKuyS# zw}4{NAYl4u{q0IR6Xb$|ki=AjK+ozay_mPfXDn^S>Lj3SO2qgm?7Jxba|l*s`B;mQ zCwpNw7u)pt`NUzR(#2rrtnCuQ=B{Zq?RfSnO4{A=5of>aNQHn?=Y22vwny!N(m%Ld zDR=8l=i3VC{-UC$C}o%M4tr2!Xsf?>@5TX>Px<=vNb$jkd4<=V{i+|$)X6|$5AZE# zM2%5HSkL*1r&yv%a2cm++0r)jr1z_o*BIohD4weC6?kEEoXsfJrwa>nxO3gh|0g(Y z1*YP2t2YYrtsbvH=BV)P*w`o}SRZ!*y1x6@tmzC0_bsyCu^5m(KGSod+_nFIdK?{? zq7mx_;R-5IuNHay0=`{{NiM54n41e#D^G+rS1{HS82>pWE82F(0k~I1=I>Nf zczQWi>7}ep`0HDQFy>%Gz(NjNjeY6afY&pLu2|yu6Z`R+u_HyZ*@0qy<`ASDho;NN z!j{Us-g z>ru#NyK<;w`2bdqo7Z4iFK7l3exBp-4Z+|f?L+UNj^=Z=6mO7wg5RgQK$`k`+9p69 z5;d;LLy(Xh#3cdQ3gglPp>dSq1qN3v-ss0gmHtB$r!4W0xa}6wx;A)@5BynK9QnRr HzenUBgPT9D From 1fbbc5df7ff668dab0cc3e6081c8a730f07055dc Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Thu, 31 Aug 2023 11:57:33 +0200 Subject: [PATCH 103/121] rebuild --- web/settings/assets/ChargeLog-298377e5.css | 1 - web/settings/assets/ChargeLog-eab2275c.css | 1 + ...eLog-c1fa84a0.js => ChargeLog-f2b39be5.js} | 2 +- ...js => ChargePointInstallation-470f2248.js} | 2 +- web/settings/assets/Chart-8b04f805.js | 1 - web/settings/assets/Chart-b8ee6f3b.js | 1 + ...ig-62c3bc70.js => CloudConfig-baf072fa.js} | 2 +- .../assets/DataManagement-22142622.js | 1 + .../assets/DataManagement-e6b0bf99.js | 1 - ...ig-cfeb9017.js => DebugConfig-5c4c9ffc.js} | 2 +- ...317.js => GeneralChargeConfig-ec57fcff.js} | 2 +- ...-173a411a.js => GeneralConfig-f25442cf.js} | 2 +- .../assets/HardwareInstallation-0ea898ce.js | 1 + .../assets/HardwareInstallation-ae3c4375.js | 1 - ...26d.js => InstantChargeConfig-676664f2.js} | 2 +- ...-8d508618.js => LegalSettings-3159f92a.js} | 2 +- ...b1.js => LoadManagementConfig-9bdba699.js} | 2 +- ...b2414e.js => MqttBridgeConfig-2808894f.js} | 2 +- .../assets/OpenwbSortableList-15b0be17.css | 1 + .../assets/OpenwbSortableList-7ba533e4.css | 1 - ...7bb0.js => OpenwbSortableList-8561f9a9.js} | 2 +- ...690b.js => OptionalComponents-69f6a3bd.js} | 2 +- ...5bf7058a.js => PVChargeConfig-8ca745ae.js} | 2 +- ...f.js => ScheduledChargeConfig-7c8c846d.js} | 2 +- web/settings/assets/Status-73741289.js | 1 - web/settings/assets/Status-7ee068bd.js | 1 + ...upport-86e0f1ee.js => Support-8e52ed51.js} | 2 +- web/settings/assets/System-13142ce3.js | 1 - web/settings/assets/System-765e2323.js | 1 + ...e-de474301.js => TestingStore-ba263cde.js} | 2 +- ...1d8cfe.js => TimeChargeConfig-ef284125.js} | 2 +- ...-2c445ee2.js => VehicleConfig-322b25b7.js} | 2 +- ...d-e2986e8e.js => backup_cloud-e0f3013d.js} | 2 +- ...d-e42eb0f9.js => backup_cloud-f1ce5010.js} | 2 +- .../{bat-974e5d23.js => bat-12170e78.js} | 2 +- .../{bat-374aadf3.js => bat-180a64ef.js} | 2 +- .../{bat-f7664e62.js => bat-212960fc.js} | 2 +- .../{bat-aaa94877.js => bat-2f8005f2.js} | 2 +- .../{bat-701b11a5.js => bat-3980db8f.js} | 2 +- .../{bat-de9e7863.js => bat-3d2b7acc.js} | 2 +- .../{bat-86e9bc80.js => bat-3dbfaf1b.js} | 2 +- .../{bat-99ab2b7b.js => bat-3e58123d.js} | 2 +- .../{bat-1edb0ead.js => bat-4320b5cc.js} | 2 +- .../{bat-8594bebd.js => bat-45b559ec.js} | 2 +- .../{bat-d030cd24.js => bat-4b5ddf83.js} | 2 +- .../{bat-e7a43b7b.js => bat-557284f3.js} | 2 +- .../{bat-1761bb8c.js => bat-61bcf2f8.js} | 2 +- .../{bat-2cb7fcb7.js => bat-6fcf71db.js} | 2 +- .../{bat-c9c9c592.js => bat-80bc8859.js} | 2 +- .../{bat-0f0a85bc.js => bat-8af3358d.js} | 2 +- .../{bat-9ba92541.js => bat-904c9172.js} | 2 +- .../{bat-dc75c3bc.js => bat-9ff121c5.js} | 2 +- .../{bat-f89e85e8.js => bat-a92f022e.js} | 2 +- .../{bat-9e87a8db.js => bat-ac5ee104.js} | 2 +- .../{bat-57cb095c.js => bat-b91f4e63.js} | 2 +- .../{bat-10d8c398.js => bat-ba791935.js} | 2 +- .../{bat-e372d758.js => bat-cb226603.js} | 2 +- .../{bat-5a3aee6e.js => bat-cbc92919.js} | 2 +- .../{bat-d3c76890.js => bat-ccba567b.js} | 2 +- .../{bat-0735bfb3.js => bat-d1af67af.js} | 2 +- .../{bat-ad02ebbd.js => bat-e1949609.js} | 2 +- .../{bat-41d251bc.js => bat-f30697e9.js} | 2 +- .../{bat-94ced6ef.js => bat-f75dd877.js} | 2 +- .../{bat-4f8ed3c9.js => bat-f9178e22.js} | 2 +- .../{bat-fe54661f.js => bat-fd9f4fe4.js} | 2 +- ...at_api-83f4eb5d.js => bat_api-e58852af.js} | 2 +- ...bus-b77c2017.js => bat_modbus-260d9b94.js} | 2 +- ...0c23a4.js => bat_smart_energy-817c3655.js} | 2 +- ...nt-a0a4acbf.js => chargePoint-07057692.js} | 2 +- ...nt-33a12343.js => chargePoint-10f32a1a.js} | 2 +- ...nt-fe6ccb61.js => chargePoint-4a124bb9.js} | 2 +- ...nt-c1796cd6.js => chargePoint-7200a105.js} | 2 +- ...nt-651f8f5f.js => chargePoint-80e648c2.js} | 2 +- ...nt-6a041309.js => chargePoint-a56bc604.js} | 2 +- ...mands-0085051f.js => commands-516069c3.js} | 2 +- ...ounter-36353861.js => counter-00ec4a93.js} | 2 +- ...ounter-ebca198b.js => counter-18fd3233.js} | 2 +- ...ounter-d6b54631.js => counter-1905ec77.js} | 2 +- ...ounter-e44eee41.js => counter-1c5a2313.js} | 2 +- ...ounter-43fc77fa.js => counter-21f55471.js} | 2 +- ...ounter-2d2082cf.js => counter-2365410a.js} | 2 +- ...ounter-88eb412e.js => counter-2a189926.js} | 2 +- ...ounter-8003bfd1.js => counter-2e4fa5c2.js} | 2 +- ...ounter-091a96b7.js => counter-3df9b0e7.js} | 2 +- ...ounter-c8a6ec77.js => counter-46a15c2b.js} | 2 +- ...ounter-8fdb9d26.js => counter-46b207f3.js} | 2 +- ...ounter-27a9c2ee.js => counter-478d9577.js} | 2 +- ...ounter-1aee48a7.js => counter-4dc3cbd5.js} | 2 +- ...ounter-dc035a3e.js => counter-57df9eec.js} | 2 +- ...ounter-6d9b8554.js => counter-5b0b9661.js} | 2 +- ...ounter-5c24ebc7.js => counter-60655200.js} | 2 +- ...ounter-87be6226.js => counter-6369ff43.js} | 2 +- ...ounter-b5fad35e.js => counter-6d0620dd.js} | 2 +- ...ounter-596d7121.js => counter-70b9e720.js} | 2 +- ...ounter-836555cd.js => counter-73783603.js} | 2 +- ...ounter-66249572.js => counter-77841659.js} | 2 +- ...ounter-29ac2dbe.js => counter-7a7be3d3.js} | 2 +- ...ounter-74542c06.js => counter-7b85a5b2.js} | 2 +- ...ounter-2daf569f.js => counter-816c921e.js} | 2 +- ...ounter-fa32a0cf.js => counter-82a793a2.js} | 2 +- ...ounter-30000cd2.js => counter-8d4f402a.js} | 2 +- ...ounter-87037b08.js => counter-9097a073.js} | 2 +- ...ounter-34bc9327.js => counter-ad208981.js} | 2 +- ...ounter-f3278b0c.js => counter-af942561.js} | 2 +- ...ounter-be7ebe08.js => counter-b2081459.js} | 2 +- ...ounter-373a1c10.js => counter-b30c239d.js} | 2 +- ...ounter-bac10632.js => counter-c0f3f4ac.js} | 2 +- ...ounter-8741a800.js => counter-d03b355d.js} | 2 +- ...ounter-96604727.js => counter-d335a007.js} | 2 +- ...ounter-e3b8a3fa.js => counter-da58c807.js} | 2 +- ...ounter-333c1a6d.js => counter-df3e561f.js} | 2 +- ...ounter-2d7380c9.js => counter-eab5abf7.js} | 2 +- ...ounter-1dc0e174.js => counter-f322702a.js} | 2 +- ...ounter-e9ec98c5.js => counter-f56715cd.js} | 2 +- ...ounter-9f3c9c7a.js => counter-fb6b0fb9.js} | 2 +- ...ounter-3aa24e62.js => counter-fbf1efa1.js} | 2 +- ...ounter-122dd37a.js => counter-fcc6cfc8.js} | 2 +- ..._s0-764584ba.js => counter_s0-0068172e.js} | 2 +- ..._sm-ea82381f.js => counter_sm-802e0059.js} | 2 +- ...{device-cbdcd521.js => device-03a0ce90.js} | 2 +- ...{device-007ca4fb.js => device-060ee4fd.js} | 2 +- ...{device-0ac32d64.js => device-0c072e3b.js} | 2 +- ...{device-658cf7d5.js => device-10d2c4c1.js} | 2 +- ...{device-8d3984b8.js => device-11808744.js} | 2 +- ...{device-81fa6cad.js => device-1ebd188c.js} | 2 +- ...{device-5eae489e.js => device-23fbc413.js} | 2 +- ...{device-c7f03dad.js => device-24f0a9e0.js} | 2 +- ...{device-796f2679.js => device-2a7fcdcd.js} | 2 +- ...{device-8eeabc14.js => device-2b476100.js} | 2 +- ...{device-ff40d8e1.js => device-2fc1a957.js} | 2 +- ...{device-e48058b2.js => device-333a1847.js} | 2 +- ...{device-e4295529.js => device-34d66ae0.js} | 2 +- ...{device-a55b29f8.js => device-368b885c.js} | 2 +- ...{device-2677ebed.js => device-3c66abac.js} | 2 +- ...{device-d70aa0bc.js => device-44e40f8a.js} | 2 +- ...{device-163e7968.js => device-48b82d13.js} | 2 +- ...{device-38cd05bd.js => device-5442f3f8.js} | 2 +- ...{device-e3c08fb4.js => device-554ac70d.js} | 2 +- ...{device-8c005647.js => device-5c559131.js} | 2 +- ...{device-1da87f6d.js => device-5e36d94b.js} | 2 +- ...{device-f7ed291a.js => device-6223df3d.js} | 2 +- ...{device-4674babe.js => device-68cea660.js} | 2 +- ...{device-26d1cd71.js => device-71f6eb4f.js} | 2 +- ...{device-f0ead4af.js => device-736742cc.js} | 2 +- ...{device-97a184d3.js => device-76b564cb.js} | 2 +- ...{device-cbc50bc1.js => device-7700d0d1.js} | 2 +- ...{device-aa08fc7f.js => device-7fbce287.js} | 2 +- ...{device-e85a7920.js => device-84c0ab33.js} | 2 +- ...{device-9507155a.js => device-9114b4f4.js} | 2 +- ...{device-b4c7f099.js => device-94f0ef9b.js} | 2 +- ...{device-711c4142.js => device-9c25dea2.js} | 2 +- ...{device-50e6b066.js => device-9f1d6204.js} | 2 +- ...{device-ae95c2d3.js => device-9f8cfcd3.js} | 2 +- ...{device-ee213d99.js => device-ae65393a.js} | 2 +- ...{device-2637042f.js => device-ae9d7f6e.js} | 2 +- ...{device-b9e954eb.js => device-b04bd256.js} | 2 +- ...{device-99280bbf.js => device-b59b9c77.js} | 2 +- ...{device-d77016c1.js => device-c0377afe.js} | 2 +- ...{device-1ae9d038.js => device-c49a0ced.js} | 2 +- ...{device-774e8229.js => device-c553c1ee.js} | 2 +- ...{device-7db846be.js => device-c5eaae23.js} | 2 +- ...{device-c7f8802d.js => device-c7a69fb7.js} | 2 +- ...{device-217340a2.js => device-cdede991.js} | 2 +- ...{device-fd68e523.js => device-d5aedcd9.js} | 2 +- ...{device-27f1f947.js => device-d971bed6.js} | 2 +- ...{device-b78ab975.js => device-e2dad607.js} | 2 +- ...{device-ed00b326.js => device-e88cb248.js} | 2 +- ...{device-7eb7f018.js => device-eded82a1.js} | 2 +- ...{device-bfe71246.js => device-eed5fccd.js} | 2 +- ...{device-91bdc917.js => device-efcbb283.js} | 2 +- ...{device-805a57b1.js => device-f186e4bf.js} | 2 +- ...{device-aba64669.js => device-f3520fbc.js} | 2 +- ...{device-3d5e6b95.js => device-f581669c.js} | 2 +- ...{device-6b6351d4.js => device-fcd34186.js} | 2 +- ...{device-d3af1afc.js => device-ff4b5125.js} | 2 +- ...e-65aaa96a.js => displayTheme-af0ce411.js} | 2 +- ...2751a.js => external_inverter-4989c79d.js} | 2 +- ...7b7e0.js => external_inverter-c6cc5286.js} | 2 +- ...cb871.js => external_inverter-debacbf1.js} | 2 +- .../{index-451d2d20.js => index-fc7a54eb.js} | 2 +- ...erter-71041bec.js => inverter-09d68c12.js} | 2 +- ...erter-67becac8.js => inverter-0a8a02aa.js} | 2 +- ...erter-5a43761c.js => inverter-0daad30f.js} | 2 +- ...erter-a15db0a0.js => inverter-1a27b5a2.js} | 2 +- ...erter-e06fd605.js => inverter-22be4ed9.js} | 2 +- ...erter-a3407794.js => inverter-2b727919.js} | 2 +- ...erter-0769e573.js => inverter-3515d2b5.js} | 2 +- ...erter-695b5c53.js => inverter-35d50734.js} | 2 +- ...erter-ac056d1d.js => inverter-39afe3b5.js} | 2 +- ...erter-e440b330.js => inverter-3b84e31d.js} | 2 +- ...erter-bc58fc73.js => inverter-3df75149.js} | 2 +- ...erter-23c62af1.js => inverter-3e855a0b.js} | 2 +- ...erter-7c9d893d.js => inverter-42feff92.js} | 2 +- ...erter-1bbefb9c.js => inverter-4ed4378e.js} | 2 +- ...erter-33d71d7c.js => inverter-5500500b.js} | 2 +- ...erter-00a09c36.js => inverter-57f7e67c.js} | 2 +- ...erter-ef72abc7.js => inverter-66b1df21.js} | 2 +- ...erter-6bf21593.js => inverter-6afece8c.js} | 2 +- ...erter-26fc0c4d.js => inverter-735276eb.js} | 2 +- ...erter-1bcb55bc.js => inverter-89a115de.js} | 2 +- ...erter-44c42273.js => inverter-8ebf65c2.js} | 2 +- ...erter-47ad48de.js => inverter-91521524.js} | 2 +- ...erter-b84b910e.js => inverter-973593c5.js} | 2 +- ...erter-a6ddec85.js => inverter-983f9bf4.js} | 2 +- ...erter-106f6b2a.js => inverter-98ed6e35.js} | 2 +- ...erter-b8fdf4a4.js => inverter-a4f4de69.js} | 2 +- ...erter-78f559db.js => inverter-ae905211.js} | 2 +- ...erter-239362ff.js => inverter-b33414cf.js} | 2 +- ...erter-3639b6ee.js => inverter-b35ac71f.js} | 2 +- ...erter-832936bd.js => inverter-b47e8b65.js} | 2 +- ...erter-3067b8de.js => inverter-b6d89f35.js} | 2 +- ...erter-36547adc.js => inverter-ba59974f.js} | 2 +- ...erter-89f2126b.js => inverter-bc54ef72.js} | 2 +- ...erter-d426b124.js => inverter-bce80bd5.js} | 2 +- ...erter-5c832d19.js => inverter-be294b52.js} | 2 +- ...erter-428bf3c7.js => inverter-c0320c10.js} | 2 +- ...erter-6f9c66d1.js => inverter-d5ca1a80.js} | 2 +- ...erter-d4107377.js => inverter-d63a850e.js} | 2 +- ...erter-3849924d.js => inverter-d7dcc616.js} | 2 +- ...erter-c3c11140.js => inverter-da627431.js} | 2 +- ...erter-eee1527f.js => inverter-e383405a.js} | 2 +- ...erter-fabd24ac.js => inverter-f0ad6bcd.js} | 2 +- ...erter-dfa572d8.js => inverter-f266f49d.js} | 2 +- ...erter-04c6e1e4.js => inverter-f900cffa.js} | 2 +- ...erter-151fa9c5.js => inverter-fb25d42c.js} | 2 +- ...ehicle-d1763e7a.js => vehicle-0247f03c.js} | 2 +- ...ehicle-75667aad.js => vehicle-0969da15.js} | 2 +- ...ehicle-391df8d0.js => vehicle-174df8ec.js} | 2 +- ...ehicle-7df8b393.js => vehicle-189fc2cb.js} | 2 +- ...ehicle-0b6d061a.js => vehicle-2c5d967c.js} | 2 +- ...ehicle-df2230d5.js => vehicle-316d265a.js} | 2 +- ...ehicle-d98ffef7.js => vehicle-6f02cb37.js} | 2 +- ...ehicle-67509117.js => vehicle-84dd6d0d.js} | 2 +- ...ehicle-4249fcff.js => vehicle-8bdcc244.js} | 2 +- ...ehicle-39e57c4c.js => vehicle-a2646a86.js} | 2 +- ...ehicle-56b3de10.js => vehicle-b76d2976.js} | 2 +- ...ehicle-a27fc177.js => vehicle-c865f314.js} | 2 +- ...ehicle-b9c60ee5.js => vehicle-f74618cf.js} | 2 +- ...{vendor-59c39d33.js => vendor-94ac8c48.js} | 60 +++++++++---------- ...s-1660eacd.js => vendor-axios-dc63434e.js} | 2 +- .../assets/vendor-bootstrap-0cf52758.css | 6 -- ...ba3518.js => vendor-bootstrap-9f620114.js} | 2 +- .../assets/vendor-bootstrap-e99e333f.css | 6 ++ .../assets/vendor-chartjs-dd3fd71e.js | 23 +++++++ .../assets/vendor-chartjs-f8e573cd.js | 23 ------- ...6e75.js => vendor-fortawesome-ad83e535.js} | 6 +- ...-7c356c02.js => vendor-jquery-f7104ff8.js} | 2 +- ...5b5ad.js => vendor-sortablejs-dbc23470.js} | 4 +- web/settings/index.html | 16 ++--- .../legacy_smart_home/smarthomeconfig.php | 7 ++- 250 files changed, 310 insertions(+), 309 deletions(-) delete mode 100644 web/settings/assets/ChargeLog-298377e5.css create mode 100644 web/settings/assets/ChargeLog-eab2275c.css rename web/settings/assets/{ChargeLog-c1fa84a0.js => ChargeLog-f2b39be5.js} (96%) rename web/settings/assets/{ChargePointInstallation-ac4eb7c0.js => ChargePointInstallation-470f2248.js} (92%) delete mode 100644 web/settings/assets/Chart-8b04f805.js create mode 100644 web/settings/assets/Chart-b8ee6f3b.js rename web/settings/assets/{CloudConfig-62c3bc70.js => CloudConfig-baf072fa.js} (96%) create mode 100644 web/settings/assets/DataManagement-22142622.js delete mode 100644 web/settings/assets/DataManagement-e6b0bf99.js rename web/settings/assets/{DebugConfig-cfeb9017.js => DebugConfig-5c4c9ffc.js} (92%) rename web/settings/assets/{GeneralChargeConfig-e7f81317.js => GeneralChargeConfig-ec57fcff.js} (87%) rename web/settings/assets/{GeneralConfig-173a411a.js => GeneralConfig-f25442cf.js} (97%) create mode 100644 web/settings/assets/HardwareInstallation-0ea898ce.js delete mode 100644 web/settings/assets/HardwareInstallation-ae3c4375.js rename web/settings/assets/{InstantChargeConfig-1957a26d.js => InstantChargeConfig-676664f2.js} (84%) rename web/settings/assets/{LegalSettings-8d508618.js => LegalSettings-3159f92a.js} (84%) rename web/settings/assets/{LoadManagementConfig-b175e1b1.js => LoadManagementConfig-9bdba699.js} (95%) rename web/settings/assets/{MqttBridgeConfig-97b2414e.js => MqttBridgeConfig-2808894f.js} (92%) create mode 100644 web/settings/assets/OpenwbSortableList-15b0be17.css delete mode 100644 web/settings/assets/OpenwbSortableList-7ba533e4.css rename web/settings/assets/{OpenwbSortableList-7d137bb0.js => OpenwbSortableList-8561f9a9.js} (94%) rename web/settings/assets/{OptionalComponents-ea25690b.js => OptionalComponents-69f6a3bd.js} (98%) rename web/settings/assets/{PVChargeConfig-5bf7058a.js => PVChargeConfig-8ca745ae.js} (98%) rename web/settings/assets/{ScheduledChargeConfig-e30b140f.js => ScheduledChargeConfig-7c8c846d.js} (85%) delete mode 100644 web/settings/assets/Status-73741289.js create mode 100644 web/settings/assets/Status-7ee068bd.js rename web/settings/assets/{Support-86e0f1ee.js => Support-8e52ed51.js} (94%) delete mode 100644 web/settings/assets/System-13142ce3.js create mode 100644 web/settings/assets/System-765e2323.js rename web/settings/assets/{TestingStore-de474301.js => TestingStore-ba263cde.js} (95%) rename web/settings/assets/{TimeChargeConfig-f11d8cfe.js => TimeChargeConfig-ef284125.js} (84%) rename web/settings/assets/{VehicleConfig-2c445ee2.js => VehicleConfig-322b25b7.js} (52%) rename web/settings/assets/{backup_cloud-e2986e8e.js => backup_cloud-e0f3013d.js} (92%) rename web/settings/assets/{backup_cloud-e42eb0f9.js => backup_cloud-f1ce5010.js} (96%) rename web/settings/assets/{bat-974e5d23.js => bat-12170e78.js} (86%) rename web/settings/assets/{bat-374aadf3.js => bat-180a64ef.js} (87%) rename web/settings/assets/{bat-f7664e62.js => bat-212960fc.js} (94%) rename web/settings/assets/{bat-aaa94877.js => bat-2f8005f2.js} (96%) rename web/settings/assets/{bat-701b11a5.js => bat-3980db8f.js} (86%) rename web/settings/assets/{bat-de9e7863.js => bat-3d2b7acc.js} (88%) rename web/settings/assets/{bat-86e9bc80.js => bat-3dbfaf1b.js} (86%) rename web/settings/assets/{bat-99ab2b7b.js => bat-3e58123d.js} (88%) rename web/settings/assets/{bat-1edb0ead.js => bat-4320b5cc.js} (85%) rename web/settings/assets/{bat-8594bebd.js => bat-45b559ec.js} (93%) rename web/settings/assets/{bat-d030cd24.js => bat-4b5ddf83.js} (86%) rename web/settings/assets/{bat-e7a43b7b.js => bat-557284f3.js} (86%) rename web/settings/assets/{bat-1761bb8c.js => bat-61bcf2f8.js} (85%) rename web/settings/assets/{bat-2cb7fcb7.js => bat-6fcf71db.js} (86%) rename web/settings/assets/{bat-c9c9c592.js => bat-80bc8859.js} (87%) rename web/settings/assets/{bat-0f0a85bc.js => bat-8af3358d.js} (86%) rename web/settings/assets/{bat-9ba92541.js => bat-904c9172.js} (85%) rename web/settings/assets/{bat-dc75c3bc.js => bat-9ff121c5.js} (86%) rename web/settings/assets/{bat-f89e85e8.js => bat-a92f022e.js} (86%) rename web/settings/assets/{bat-9e87a8db.js => bat-ac5ee104.js} (87%) rename web/settings/assets/{bat-57cb095c.js => bat-b91f4e63.js} (90%) rename web/settings/assets/{bat-10d8c398.js => bat-ba791935.js} (90%) rename web/settings/assets/{bat-e372d758.js => bat-cb226603.js} (86%) rename web/settings/assets/{bat-5a3aee6e.js => bat-cbc92919.js} (86%) rename web/settings/assets/{bat-d3c76890.js => bat-ccba567b.js} (86%) rename web/settings/assets/{bat-0735bfb3.js => bat-d1af67af.js} (85%) rename web/settings/assets/{bat-ad02ebbd.js => bat-e1949609.js} (93%) rename web/settings/assets/{bat-41d251bc.js => bat-f30697e9.js} (86%) rename web/settings/assets/{bat-94ced6ef.js => bat-f75dd877.js} (86%) rename web/settings/assets/{bat-4f8ed3c9.js => bat-f9178e22.js} (94%) rename web/settings/assets/{bat-fe54661f.js => bat-fd9f4fe4.js} (86%) rename web/settings/assets/{bat_api-83f4eb5d.js => bat_api-e58852af.js} (86%) rename web/settings/assets/{bat_modbus-b77c2017.js => bat_modbus-260d9b94.js} (86%) rename web/settings/assets/{bat_smart_energy-040c23a4.js => bat_smart_energy-817c3655.js} (87%) rename web/settings/assets/{chargePoint-a0a4acbf.js => chargePoint-07057692.js} (95%) rename web/settings/assets/{chargePoint-33a12343.js => chargePoint-10f32a1a.js} (94%) rename web/settings/assets/{chargePoint-fe6ccb61.js => chargePoint-4a124bb9.js} (95%) rename web/settings/assets/{chargePoint-c1796cd6.js => chargePoint-7200a105.js} (98%) rename web/settings/assets/{chargePoint-651f8f5f.js => chargePoint-80e648c2.js} (84%) rename web/settings/assets/{chargePoint-6a041309.js => chargePoint-a56bc604.js} (92%) rename web/settings/assets/{commands-0085051f.js => commands-516069c3.js} (96%) rename web/settings/assets/{counter-36353861.js => counter-00ec4a93.js} (92%) rename web/settings/assets/{counter-ebca198b.js => counter-18fd3233.js} (90%) rename web/settings/assets/{counter-d6b54631.js => counter-1905ec77.js} (90%) rename web/settings/assets/{counter-e44eee41.js => counter-1c5a2313.js} (86%) rename web/settings/assets/{counter-43fc77fa.js => counter-21f55471.js} (88%) rename web/settings/assets/{counter-2d2082cf.js => counter-2365410a.js} (91%) rename web/settings/assets/{counter-88eb412e.js => counter-2a189926.js} (87%) rename web/settings/assets/{counter-8003bfd1.js => counter-2e4fa5c2.js} (86%) rename web/settings/assets/{counter-091a96b7.js => counter-3df9b0e7.js} (88%) rename web/settings/assets/{counter-c8a6ec77.js => counter-46a15c2b.js} (96%) rename web/settings/assets/{counter-8fdb9d26.js => counter-46b207f3.js} (91%) rename web/settings/assets/{counter-27a9c2ee.js => counter-478d9577.js} (90%) rename web/settings/assets/{counter-1aee48a7.js => counter-4dc3cbd5.js} (93%) rename web/settings/assets/{counter-dc035a3e.js => counter-57df9eec.js} (86%) rename web/settings/assets/{counter-6d9b8554.js => counter-5b0b9661.js} (88%) rename web/settings/assets/{counter-5c24ebc7.js => counter-60655200.js} (86%) rename web/settings/assets/{counter-87be6226.js => counter-6369ff43.js} (90%) rename web/settings/assets/{counter-b5fad35e.js => counter-6d0620dd.js} (97%) rename web/settings/assets/{counter-596d7121.js => counter-70b9e720.js} (89%) rename web/settings/assets/{counter-836555cd.js => counter-73783603.js} (86%) rename web/settings/assets/{counter-66249572.js => counter-77841659.js} (86%) rename web/settings/assets/{counter-29ac2dbe.js => counter-7a7be3d3.js} (86%) rename web/settings/assets/{counter-74542c06.js => counter-7b85a5b2.js} (86%) rename web/settings/assets/{counter-2daf569f.js => counter-816c921e.js} (96%) rename web/settings/assets/{counter-fa32a0cf.js => counter-82a793a2.js} (86%) rename web/settings/assets/{counter-30000cd2.js => counter-8d4f402a.js} (86%) rename web/settings/assets/{counter-87037b08.js => counter-9097a073.js} (86%) rename web/settings/assets/{counter-34bc9327.js => counter-ad208981.js} (85%) rename web/settings/assets/{counter-f3278b0c.js => counter-af942561.js} (88%) rename web/settings/assets/{counter-be7ebe08.js => counter-b2081459.js} (86%) rename web/settings/assets/{counter-373a1c10.js => counter-b30c239d.js} (86%) rename web/settings/assets/{counter-bac10632.js => counter-c0f3f4ac.js} (90%) rename web/settings/assets/{counter-8741a800.js => counter-d03b355d.js} (85%) rename web/settings/assets/{counter-96604727.js => counter-d335a007.js} (90%) rename web/settings/assets/{counter-e3b8a3fa.js => counter-da58c807.js} (86%) rename web/settings/assets/{counter-333c1a6d.js => counter-df3e561f.js} (87%) rename web/settings/assets/{counter-2d7380c9.js => counter-eab5abf7.js} (87%) rename web/settings/assets/{counter-1dc0e174.js => counter-f322702a.js} (86%) rename web/settings/assets/{counter-e9ec98c5.js => counter-f56715cd.js} (89%) rename web/settings/assets/{counter-9f3c9c7a.js => counter-fb6b0fb9.js} (86%) rename web/settings/assets/{counter-3aa24e62.js => counter-fbf1efa1.js} (85%) rename web/settings/assets/{counter-122dd37a.js => counter-fcc6cfc8.js} (86%) rename web/settings/assets/{counter_s0-764584ba.js => counter_s0-0068172e.js} (86%) rename web/settings/assets/{counter_sm-ea82381f.js => counter_sm-802e0059.js} (96%) rename web/settings/assets/{device-cbdcd521.js => device-03a0ce90.js} (92%) rename web/settings/assets/{device-007ca4fb.js => device-060ee4fd.js} (85%) rename web/settings/assets/{device-0ac32d64.js => device-0c072e3b.js} (91%) rename web/settings/assets/{device-658cf7d5.js => device-10d2c4c1.js} (87%) rename web/settings/assets/{device-8d3984b8.js => device-11808744.js} (89%) rename web/settings/assets/{device-81fa6cad.js => device-1ebd188c.js} (85%) rename web/settings/assets/{device-5eae489e.js => device-23fbc413.js} (90%) rename web/settings/assets/{device-c7f03dad.js => device-24f0a9e0.js} (90%) rename web/settings/assets/{device-796f2679.js => device-2a7fcdcd.js} (88%) rename web/settings/assets/{device-8eeabc14.js => device-2b476100.js} (87%) rename web/settings/assets/{device-ff40d8e1.js => device-2fc1a957.js} (89%) rename web/settings/assets/{device-e48058b2.js => device-333a1847.js} (91%) rename web/settings/assets/{device-e4295529.js => device-34d66ae0.js} (87%) rename web/settings/assets/{device-a55b29f8.js => device-368b885c.js} (96%) rename web/settings/assets/{device-2677ebed.js => device-3c66abac.js} (89%) rename web/settings/assets/{device-d70aa0bc.js => device-44e40f8a.js} (90%) rename web/settings/assets/{device-163e7968.js => device-48b82d13.js} (87%) rename web/settings/assets/{device-38cd05bd.js => device-5442f3f8.js} (89%) rename web/settings/assets/{device-e3c08fb4.js => device-554ac70d.js} (85%) rename web/settings/assets/{device-8c005647.js => device-5c559131.js} (85%) rename web/settings/assets/{device-1da87f6d.js => device-5e36d94b.js} (87%) rename web/settings/assets/{device-f7ed291a.js => device-6223df3d.js} (87%) rename web/settings/assets/{device-4674babe.js => device-68cea660.js} (85%) rename web/settings/assets/{device-26d1cd71.js => device-71f6eb4f.js} (89%) rename web/settings/assets/{device-f0ead4af.js => device-736742cc.js} (87%) rename web/settings/assets/{device-97a184d3.js => device-76b564cb.js} (95%) rename web/settings/assets/{device-cbc50bc1.js => device-7700d0d1.js} (91%) rename web/settings/assets/{device-aa08fc7f.js => device-7fbce287.js} (86%) rename web/settings/assets/{device-e85a7920.js => device-84c0ab33.js} (90%) rename web/settings/assets/{device-9507155a.js => device-9114b4f4.js} (95%) rename web/settings/assets/{device-b4c7f099.js => device-94f0ef9b.js} (88%) rename web/settings/assets/{device-711c4142.js => device-9c25dea2.js} (89%) rename web/settings/assets/{device-50e6b066.js => device-9f1d6204.js} (89%) rename web/settings/assets/{device-ae95c2d3.js => device-9f8cfcd3.js} (87%) rename web/settings/assets/{device-ee213d99.js => device-ae65393a.js} (89%) rename web/settings/assets/{device-2637042f.js => device-ae9d7f6e.js} (92%) rename web/settings/assets/{device-b9e954eb.js => device-b04bd256.js} (89%) rename web/settings/assets/{device-99280bbf.js => device-b59b9c77.js} (87%) rename web/settings/assets/{device-d77016c1.js => device-c0377afe.js} (87%) rename web/settings/assets/{device-1ae9d038.js => device-c49a0ced.js} (94%) rename web/settings/assets/{device-774e8229.js => device-c553c1ee.js} (87%) rename web/settings/assets/{device-7db846be.js => device-c5eaae23.js} (89%) rename web/settings/assets/{device-c7f8802d.js => device-c7a69fb7.js} (86%) rename web/settings/assets/{device-217340a2.js => device-cdede991.js} (88%) rename web/settings/assets/{device-fd68e523.js => device-d5aedcd9.js} (87%) rename web/settings/assets/{device-27f1f947.js => device-d971bed6.js} (87%) rename web/settings/assets/{device-b78ab975.js => device-e2dad607.js} (87%) rename web/settings/assets/{device-ed00b326.js => device-e88cb248.js} (89%) rename web/settings/assets/{device-7eb7f018.js => device-eded82a1.js} (87%) rename web/settings/assets/{device-bfe71246.js => device-eed5fccd.js} (90%) rename web/settings/assets/{device-91bdc917.js => device-efcbb283.js} (91%) rename web/settings/assets/{device-805a57b1.js => device-f186e4bf.js} (89%) rename web/settings/assets/{device-aba64669.js => device-f3520fbc.js} (89%) rename web/settings/assets/{device-3d5e6b95.js => device-f581669c.js} (88%) rename web/settings/assets/{device-6b6351d4.js => device-fcd34186.js} (90%) rename web/settings/assets/{device-d3af1afc.js => device-ff4b5125.js} (87%) rename web/settings/assets/{displayTheme-65aaa96a.js => displayTheme-af0ce411.js} (97%) rename web/settings/assets/{external_inverter-79f2751a.js => external_inverter-4989c79d.js} (92%) rename web/settings/assets/{external_inverter-3a87b7e0.js => external_inverter-c6cc5286.js} (86%) rename web/settings/assets/{external_inverter-fc2cb871.js => external_inverter-debacbf1.js} (86%) rename web/settings/assets/{index-451d2d20.js => index-fc7a54eb.js} (76%) rename web/settings/assets/{inverter-71041bec.js => inverter-09d68c12.js} (89%) rename web/settings/assets/{inverter-67becac8.js => inverter-0a8a02aa.js} (86%) rename web/settings/assets/{inverter-5a43761c.js => inverter-0daad30f.js} (90%) rename web/settings/assets/{inverter-a15db0a0.js => inverter-1a27b5a2.js} (86%) rename web/settings/assets/{inverter-e06fd605.js => inverter-22be4ed9.js} (93%) rename web/settings/assets/{inverter-a3407794.js => inverter-2b727919.js} (93%) rename web/settings/assets/{inverter-0769e573.js => inverter-3515d2b5.js} (93%) rename web/settings/assets/{inverter-695b5c53.js => inverter-35d50734.js} (86%) rename web/settings/assets/{inverter-ac056d1d.js => inverter-39afe3b5.js} (86%) rename web/settings/assets/{inverter-e440b330.js => inverter-3b84e31d.js} (86%) rename web/settings/assets/{inverter-bc58fc73.js => inverter-3df75149.js} (91%) rename web/settings/assets/{inverter-23c62af1.js => inverter-3e855a0b.js} (86%) rename web/settings/assets/{inverter-7c9d893d.js => inverter-42feff92.js} (86%) rename web/settings/assets/{inverter-1bbefb9c.js => inverter-4ed4378e.js} (91%) rename web/settings/assets/{inverter-33d71d7c.js => inverter-5500500b.js} (87%) rename web/settings/assets/{inverter-00a09c36.js => inverter-57f7e67c.js} (86%) rename web/settings/assets/{inverter-ef72abc7.js => inverter-66b1df21.js} (89%) rename web/settings/assets/{inverter-6bf21593.js => inverter-6afece8c.js} (90%) rename web/settings/assets/{inverter-26fc0c4d.js => inverter-735276eb.js} (94%) rename web/settings/assets/{inverter-1bcb55bc.js => inverter-89a115de.js} (86%) rename web/settings/assets/{inverter-44c42273.js => inverter-8ebf65c2.js} (96%) rename web/settings/assets/{inverter-47ad48de.js => inverter-91521524.js} (90%) rename web/settings/assets/{inverter-b84b910e.js => inverter-973593c5.js} (86%) rename web/settings/assets/{inverter-a6ddec85.js => inverter-983f9bf4.js} (93%) rename web/settings/assets/{inverter-106f6b2a.js => inverter-98ed6e35.js} (88%) rename web/settings/assets/{inverter-b8fdf4a4.js => inverter-a4f4de69.js} (86%) rename web/settings/assets/{inverter-78f559db.js => inverter-ae905211.js} (86%) rename web/settings/assets/{inverter-239362ff.js => inverter-b33414cf.js} (89%) rename web/settings/assets/{inverter-3639b6ee.js => inverter-b35ac71f.js} (88%) rename web/settings/assets/{inverter-832936bd.js => inverter-b47e8b65.js} (86%) rename web/settings/assets/{inverter-3067b8de.js => inverter-b6d89f35.js} (86%) rename web/settings/assets/{inverter-36547adc.js => inverter-ba59974f.js} (95%) rename web/settings/assets/{inverter-89f2126b.js => inverter-bc54ef72.js} (86%) rename web/settings/assets/{inverter-d426b124.js => inverter-bce80bd5.js} (86%) rename web/settings/assets/{inverter-5c832d19.js => inverter-be294b52.js} (86%) rename web/settings/assets/{inverter-428bf3c7.js => inverter-c0320c10.js} (88%) rename web/settings/assets/{inverter-6f9c66d1.js => inverter-d5ca1a80.js} (90%) rename web/settings/assets/{inverter-d4107377.js => inverter-d63a850e.js} (86%) rename web/settings/assets/{inverter-3849924d.js => inverter-d7dcc616.js} (94%) rename web/settings/assets/{inverter-c3c11140.js => inverter-da627431.js} (93%) rename web/settings/assets/{inverter-eee1527f.js => inverter-e383405a.js} (93%) rename web/settings/assets/{inverter-fabd24ac.js => inverter-f0ad6bcd.js} (86%) rename web/settings/assets/{inverter-dfa572d8.js => inverter-f266f49d.js} (86%) rename web/settings/assets/{inverter-04c6e1e4.js => inverter-f900cffa.js} (86%) rename web/settings/assets/{inverter-151fa9c5.js => inverter-fb25d42c.js} (86%) rename web/settings/assets/{vehicle-d1763e7a.js => vehicle-0247f03c.js} (93%) rename web/settings/assets/{vehicle-75667aad.js => vehicle-0969da15.js} (91%) rename web/settings/assets/{vehicle-391df8d0.js => vehicle-174df8ec.js} (93%) rename web/settings/assets/{vehicle-7df8b393.js => vehicle-189fc2cb.js} (94%) rename web/settings/assets/{vehicle-0b6d061a.js => vehicle-2c5d967c.js} (90%) rename web/settings/assets/{vehicle-df2230d5.js => vehicle-316d265a.js} (92%) rename web/settings/assets/{vehicle-d98ffef7.js => vehicle-6f02cb37.js} (92%) rename web/settings/assets/{vehicle-67509117.js => vehicle-84dd6d0d.js} (95%) rename web/settings/assets/{vehicle-4249fcff.js => vehicle-8bdcc244.js} (95%) rename web/settings/assets/{vehicle-39e57c4c.js => vehicle-a2646a86.js} (94%) rename web/settings/assets/{vehicle-56b3de10.js => vehicle-b76d2976.js} (91%) rename web/settings/assets/{vehicle-a27fc177.js => vehicle-c865f314.js} (91%) rename web/settings/assets/{vehicle-b9c60ee5.js => vehicle-f74618cf.js} (91%) rename web/settings/assets/{vendor-59c39d33.js => vendor-94ac8c48.js} (56%) rename web/settings/assets/{vendor-axios-1660eacd.js => vendor-axios-dc63434e.js} (99%) delete mode 100644 web/settings/assets/vendor-bootstrap-0cf52758.css rename web/settings/assets/{vendor-bootstrap-aeba3518.js => vendor-bootstrap-9f620114.js} (99%) create mode 100644 web/settings/assets/vendor-bootstrap-e99e333f.css create mode 100644 web/settings/assets/vendor-chartjs-dd3fd71e.js delete mode 100644 web/settings/assets/vendor-chartjs-f8e573cd.js rename web/settings/assets/{vendor-fortawesome-532a6e75.js => vendor-fortawesome-ad83e535.js} (87%) rename web/settings/assets/{vendor-jquery-7c356c02.js => vendor-jquery-f7104ff8.js} (99%) rename web/settings/assets/{vendor-sortablejs-1a35b5ad.js => vendor-sortablejs-dbc23470.js} (78%) diff --git a/web/settings/assets/ChargeLog-298377e5.css b/web/settings/assets/ChargeLog-298377e5.css deleted file mode 100644 index d70d915689..0000000000 --- a/web/settings/assets/ChargeLog-298377e5.css +++ /dev/null @@ -1 +0,0 @@ -.hide[data-v-8607e7e7]{display:none}.charge-log-table[data-v-8607e7e7],.charge-log-totals[data-v-8607e7e7]{border:none;padding:0}.charge-log-table[data-v-8607e7e7] .card-body,.charge-log-totals[data-v-8607e7e7] .card-body{padding:0}.charge-log-table[data-v-8607e7e7] .dataTables_wrapper .row:nth-child(2n){overflow-x:scroll}[data-v-8607e7e7] .vtl-table .vtl-thead .vtl-thead-th{color:var(--light);background-color:var(--dark);border-color:var(--dark)}[data-v-8607e7e7] .table-bordered td{border-color:var(--secondary)}[data-v-8607e7e7] .vtl-card-body .vtl-row:first-child>div{padding-left:0;padding-right:0}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:hover{background-color:#d1ecf1}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:nth-child(odd):not(:hover){background-color:var(--light)}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:nth-child(2n):not(:hover){background-color:var(--white)}[data-v-8607e7e7] .vtl-paging{align-items:center}[data-v-8607e7e7] .vtl-paging-change-div{text-align:center}[data-v-8607e7e7] .vtl-tbody-td .td-end{text-align:right}[data-v-8607e7e7] .vtl-tbody-td .td-center{text-align:center}[data-v-8607e7e7] .tag{border-radius:10px;padding:2px 5px} diff --git a/web/settings/assets/ChargeLog-eab2275c.css b/web/settings/assets/ChargeLog-eab2275c.css new file mode 100644 index 0000000000..00919f92dd --- /dev/null +++ b/web/settings/assets/ChargeLog-eab2275c.css @@ -0,0 +1 @@ +.hide[data-v-8607e7e7]{display:none}.charge-log-table[data-v-8607e7e7],.charge-log-totals[data-v-8607e7e7]{border:none;padding:0}.charge-log-table[data-v-8607e7e7] .card-body,.charge-log-totals[data-v-8607e7e7] .card-body{padding:0}.charge-log-table[data-v-8607e7e7] .dataTables_wrapper .row:nth-child(even){overflow-x:scroll}[data-v-8607e7e7] .vtl-table .vtl-thead .vtl-thead-th{color:var(--light);background-color:var(--dark);border-color:var(--dark)}[data-v-8607e7e7] .table-bordered td{border-color:var(--secondary)}[data-v-8607e7e7] .vtl-card-body .vtl-row:first-child>div{padding-left:0;padding-right:0}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:hover{background-color:#d1ecf1}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:nth-child(odd):not(:hover){background-color:var(--light)}[data-v-8607e7e7] .vtl-table .vtl-tbody .vtl-tbody-tr:nth-child(even):not(:hover){background-color:var(--white)}[data-v-8607e7e7] .vtl-paging{align-items:center}[data-v-8607e7e7] .vtl-paging-change-div{text-align:center}[data-v-8607e7e7] .vtl-tbody-td .td-end{text-align:right}[data-v-8607e7e7] .vtl-tbody-td .td-center{text-align:center}[data-v-8607e7e7] .tag{border-radius:10px;padding:2px 5px} diff --git a/web/settings/assets/ChargeLog-c1fa84a0.js b/web/settings/assets/ChargeLog-f2b39be5.js similarity index 96% rename from web/settings/assets/ChargeLog-c1fa84a0.js rename to web/settings/assets/ChargeLog-f2b39be5.js index 5abfb54ea2..8feb955170 100644 --- a/web/settings/assets/ChargeLog-c1fa84a0.js +++ b/web/settings/assets/ChargeLog-f2b39be5.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-532a6e75.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-59c39d33.js";import{C as N}from"./index-451d2d20.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-ad83e535.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-94ac8c48.js";import{C as N}from"./index-fc7a54eb.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-ac4eb7c0.js b/web/settings/assets/ChargePointInstallation-470f2248.js similarity index 92% rename from web/settings/assets/ChargePointInstallation-ac4eb7c0.js rename to web/settings/assets/ChargePointInstallation-470f2248.js index 279069a257..cf10e5407c 100644 --- a/web/settings/assets/ChargePointInstallation-ac4eb7c0.js +++ b/web/settings/assets/ChargePointInstallation-470f2248.js @@ -1 +1 @@ -import{l as J,d as G,R as Q,A as X,S as Y,T as K,J as ee,U as te,F as ne,V as ae}from"./vendor-fortawesome-532a6e75.js";import{_ as L,C as oe}from"./index-451d2d20.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a0a4acbf.js"),["assets/chargePoint-a0a4acbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-6a041309.js"),["assets/chargePoint-6a041309.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-c1796cd6.js"),["assets/chargePoint-c1796cd6.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-651f8f5f.js"),["assets/chargePoint-651f8f5f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-fe6ccb61.js"),["assets/chargePoint-fe6ccb61.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-33a12343.js"),["assets/chargePoint-33a12343.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-0085051f.js"),["assets/commands-0085051f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),Re=_(()=>u("br",null,null,-1)),je=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),R=h("openwb-base-click-button"),j=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(R,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),Re,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),je,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-ad83e535.js";import{_ as L,C as oe}from"./index-fc7a54eb.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-07057692.js"),["assets/chargePoint-07057692.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a56bc604.js"),["assets/chargePoint-a56bc604.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-7200a105.js"),["assets/chargePoint-7200a105.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-80e648c2.js"),["assets/chargePoint-80e648c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-4a124bb9.js"),["assets/chargePoint-4a124bb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-10f32a1a.js"),["assets/chargePoint-10f32a1a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-516069c3.js"),["assets/commands-516069c3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-8b04f805.js b/web/settings/assets/Chart-8b04f805.js deleted file mode 100644 index cbc6dae917..0000000000 --- a/web/settings/assets/Chart-8b04f805.js +++ /dev/null @@ -1 +0,0 @@ -import{l as T,J as W,K as L,L as q,M as O,P as j,F as M}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-451d2d20.js";import{C as E,p as z,a as V,L as B,b as F,P,c as N,T as $,i as J,d as X,e as Z,g as K}from"./vendor-chartjs-f8e573cd.js";import{_ as G,p as u,k as n,l as c,q as v,A as o,L as d,y as f,u as g,G as x,I as k,x as C}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-luxon-1af9332f.js";T.add(W,L,q,O,j);E.register(z,V,B,F,P,N,$,J,X);const U={name:"OpenwbChart",components:{ChartjsLine:Z,FontAwesomeIcon:M},mixins:[H],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=K(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",h="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),h="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=h},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"];default:return}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(t.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}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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},Y={class:"chart"},Q={name:"chartForm"},ee={key:1},te={key:1},ae={class:"openwb-chart"};function re(e,a,r,s,i,t){const l=u("openwb-base-select-input"),h=u("openwb-base-text-input"),b=u("openwb-base-card"),D=u("openwb-base-alert"),R=u("chartjs-line"),w=u("font-awesome-icon"),S=u("openwb-base-heading");return n(),c("div",Y,[v("form",Q,[o(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[o(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=p=>i.chartRange=p),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),o(h,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=p=>t.chartDate=p),a[2]||(a[2]=p=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),c("div",ee,[t.chartDataHasEntries?(n(),c("div",te,[o(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ae,[o(R,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),o(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),c(x,null,k(t.chartTotals,(p,m)=>(n(),f(b,{key:m,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(m)},{header:d(()=>[o(w,{"fixed-width":"",icon:t.getCardIcon(m)},null,8,["icon"]),g(" "+C(t.getTotalsLabel(m)),1)]),default:d(()=>[(n(!0),c(x,null,k(p,(A,y)=>(n(),c("div",{key:y},[o(S,null,{default:d(()=>[g(C(t.getTotalsLabel(m,y)),1)]),_:2},1024),(n(!0),c(x,null,k(A,(I,_)=>(n(),c("div",{key:_},[o(h,{title:t.getTotalsLabel(m,y,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(I/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"]))),128))]),_:1})])):(n(),f(D,{key:0,subtype:"info"},{default:d(()=>[g(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),f(D,{key:0,subtype:"info"},{default:d(()=>[g(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const pe=G(U,[["render",re],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{pe as default}; diff --git a/web/settings/assets/Chart-b8ee6f3b.js b/web/settings/assets/Chart-b8ee6f3b.js new file mode 100644 index 0000000000..40f90f7a8c --- /dev/null +++ b/web/settings/assets/Chart-b8ee6f3b.js @@ -0,0 +1 @@ +import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-fc7a54eb.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-dd3fd71e.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; diff --git a/web/settings/assets/CloudConfig-62c3bc70.js b/web/settings/assets/CloudConfig-baf072fa.js similarity index 96% rename from web/settings/assets/CloudConfig-62c3bc70.js rename to web/settings/assets/CloudConfig-baf072fa.js index d1825bcb0a..52531d3730 100644 --- a/web/settings/assets/CloudConfig-62c3bc70.js +++ b/web/settings/assets/CloudConfig-baf072fa.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-451d2d20.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0f3013d.js"),["assets/backup_cloud-e0f3013d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f1ce5010.js"),["assets/backup_cloud-f1ce5010.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; diff --git a/web/settings/assets/DataManagement-e6b0bf99.js b/web/settings/assets/DataManagement-e6b0bf99.js deleted file mode 100644 index 75c3161886..0000000000 --- a/web/settings/assets/DataManagement-e6b0bf99.js +++ /dev/null @@ -1 +0,0 @@ -import{l as z,$ as V,a0 as H,a1 as j,a2 as A,a3 as P,F as R}from"./vendor-fortawesome-532a6e75.js";import{_ as D,C as N}from"./index-451d2d20.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function $(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const K=C(I,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e2986e8e.js"),["assets/backup_cloud-e2986e8e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e42eb0f9.js"),["assets/backup_cloud-e42eb0f9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:K})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const Ke=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Ke as default}; diff --git a/web/settings/assets/DebugConfig-cfeb9017.js b/web/settings/assets/DebugConfig-5c4c9ffc.js similarity index 92% rename from web/settings/assets/DebugConfig-cfeb9017.js rename to web/settings/assets/DebugConfig-5c4c9ffc.js index 086fb1bb85..14b82f8c21 100644 --- a/web/settings/assets/DebugConfig-cfeb9017.js +++ b/web/settings/assets/DebugConfig-5c4c9ffc.js @@ -1,2 +1,2 @@ -import{l as h,Y as w,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as _}from"./index-451d2d20.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Z as w,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as _}from"./index-fc7a54eb.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-e7f81317.js b/web/settings/assets/GeneralChargeConfig-ec57fcff.js similarity index 87% rename from web/settings/assets/GeneralChargeConfig-e7f81317.js rename to web/settings/assets/GeneralChargeConfig-ec57fcff.js index 0443bee0ac..122d76e0c7 100644 --- a/web/settings/assets/GeneralChargeConfig-e7f81317.js +++ b/web/settings/assets/GeneralChargeConfig-ec57fcff.js @@ -1 +1 @@ -import{C as c}from"./index-451d2d20.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-fc7a54eb.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-173a411a.js b/web/settings/assets/GeneralConfig-f25442cf.js similarity index 97% rename from web/settings/assets/GeneralConfig-173a411a.js rename to web/settings/assets/GeneralConfig-f25442cf.js index b1da9adf3c..ed2eea12ae 100644 --- a/web/settings/assets/GeneralConfig-173a411a.js +++ b/web/settings/assets/GeneralConfig-f25442cf.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-451d2d20.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a92f022e.js"),["assets/bat-a92f022e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-60655200.js"),["assets/counter-60655200.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b47e8b65.js"),["assets/inverter-b47e8b65.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-3980db8f.js"),["assets/bat-3980db8f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-fcc6cfc8.js"),["assets/counter-fcc6cfc8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c6cc5286.js"),["assets/external_inverter-c6cc5286.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-57f7e67c.js"),["assets/inverter-57f7e67c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-d1af67af.js"),["assets/bat-d1af67af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-7b85a5b2.js"),["assets/counter-7b85a5b2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-d335a007.js"),["assets/counter-d335a007.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-91521524.js"),["assets/inverter-91521524.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-4320b5cc.js"),["assets/bat-4320b5cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-fbf1efa1.js"),["assets/counter-fbf1efa1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-debacbf1.js"),["assets/external_inverter-debacbf1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-35d50734.js"),["assets/inverter-35d50734.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-af942561.js"),["assets/counter-af942561.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b35ac71f.js"),["assets/inverter-b35ac71f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-ac5ee104.js"),["assets/bat-ac5ee104.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-da58c807.js"),["assets/counter-da58c807.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-0a8a02aa.js"),["assets/inverter-0a8a02aa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-80bc8859.js"),["assets/bat-80bc8859.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-0068172e.js"),["assets/counter_s0-0068172e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-802e0059.js"),["assets/counter_sm-802e0059.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-fb25d42c.js"),["assets/inverter-fb25d42c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fd9f4fe4.js"),["assets/bat-fd9f4fe4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-9097a073.js"),["assets/counter-9097a073.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d63a850e.js"),["assets/inverter-d63a850e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-2f8005f2.js"),["assets/bat-2f8005f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-6d0620dd.js"),["assets/counter-6d0620dd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-735276eb.js"),["assets/inverter-735276eb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-ccba567b.js"),["assets/bat-ccba567b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-8d4f402a.js"),["assets/counter-8d4f402a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-be294b52.js"),["assets/inverter-be294b52.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-7a7be3d3.js"),["assets/counter-7a7be3d3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f9178e22.js"),["assets/bat-f9178e22.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-46a15c2b.js"),["assets/counter-46a15c2b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-da627431.js"),["assets/inverter-da627431.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-ad208981.js"),["assets/counter-ad208981.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-d7dcc616.js"),["assets/inverter-d7dcc616.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-b6d89f35.js"),["assets/inverter-b6d89f35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-45b559ec.js"),["assets/bat-45b559ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-f56715cd.js"),["assets/counter-f56715cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-3515d2b5.js"),["assets/inverter-3515d2b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-5b0b9661.js"),["assets/counter-5b0b9661.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-66b1df21.js"),["assets/inverter-66b1df21.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-904c9172.js"),["assets/bat-904c9172.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-2e4fa5c2.js"),["assets/counter-2e4fa5c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-f266f49d.js"),["assets/inverter-f266f49d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-212960fc.js"),["assets/bat-212960fc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-816c921e.js"),["assets/counter-816c921e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-e383405a.js"),["assets/inverter-e383405a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3e58123d.js"),["assets/bat-3e58123d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-3d2b7acc.js"),["assets/bat-3d2b7acc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-21f55471.js"),["assets/counter-21f55471.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-09d68c12.js"),["assets/inverter-09d68c12.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-ba791935.js"),["assets/bat-ba791935.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-6369ff43.js"),["assets/counter-6369ff43.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0daad30f.js"),["assets/inverter-0daad30f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c0320c10.js"),["assets/inverter-c0320c10.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-3df9b0e7.js"),["assets/counter-3df9b0e7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f0ad6bcd.js"),["assets/inverter-f0ad6bcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-46b207f3.js"),["assets/counter-46b207f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-4ed4378e.js"),["assets/inverter-4ed4378e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-557284f3.js"),["assets/bat-557284f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-77841659.js"),["assets/counter-77841659.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-3b84e31d.js"),["assets/inverter-3b84e31d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-61bcf2f8.js"),["assets/bat-61bcf2f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d03b355d.js"),["assets/counter-d03b355d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-42feff92.js"),["assets/inverter-42feff92.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-12170e78.js"),["assets/bat-12170e78.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-f900cffa.js"),["assets/inverter-f900cffa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-cbc92919.js"),["assets/bat-cbc92919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-82a793a2.js"),["assets/counter-82a793a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-89a115de.js"),["assets/inverter-89a115de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b30c239d.js"),["assets/counter-b30c239d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-70b9e720.js"),["assets/counter-70b9e720.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6afece8c.js"),["assets/inverter-6afece8c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cb226603.js"),["assets/bat-cb226603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-817c3655.js"),["assets/bat_smart_energy-817c3655.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-fb6b0fb9.js"),["assets/counter-fb6b0fb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-8ebf65c2.js"),["assets/inverter-8ebf65c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-4b5ddf83.js"),["assets/bat-4b5ddf83.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-bce80bd5.js"),["assets/inverter-bce80bd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-eab5abf7.js"),["assets/counter-eab5abf7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-5500500b.js"),["assets/inverter-5500500b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-57df9eec.js"),["assets/counter-57df9eec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-18fd3233.js"),["assets/counter-18fd3233.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-39afe3b5.js"),["assets/inverter-39afe3b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-1c5a2313.js"),["assets/counter-1c5a2313.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b33414cf.js"),["assets/inverter-b33414cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-8af3358d.js"),["assets/bat-8af3358d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-b2081459.js"),["assets/counter-b2081459.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-973593c5.js"),["assets/inverter-973593c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-4dc3cbd5.js"),["assets/counter-4dc3cbd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-22be4ed9.js"),["assets/inverter-22be4ed9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-e1949609.js"),["assets/bat-e1949609.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2365410a.js"),["assets/counter-2365410a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4989c79d.js"),["assets/external_inverter-4989c79d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-983f9bf4.js"),["assets/inverter-983f9bf4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b91f4e63.js"),["assets/bat-b91f4e63.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-2b727919.js"),["assets/inverter-2b727919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-9ff121c5.js"),["assets/bat-9ff121c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-f322702a.js"),["assets/counter-f322702a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-a4f4de69.js"),["assets/inverter-a4f4de69.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-f30697e9.js"),["assets/bat-f30697e9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-df3e561f.js"),["assets/counter-df3e561f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3e855a0b.js"),["assets/inverter-3e855a0b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6fcf71db.js"),["assets/bat-6fcf71db.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-3df75149.js"),["assets/inverter-3df75149.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-3dbfaf1b.js"),["assets/bat-3dbfaf1b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-478d9577.js"),["assets/counter-478d9577.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-ae905211.js"),["assets/inverter-ae905211.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-1a27b5a2.js"),["assets/inverter-1a27b5a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-f75dd877.js"),["assets/bat-f75dd877.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-2a189926.js"),["assets/counter-2a189926.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-bc54ef72.js"),["assets/inverter-bc54ef72.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-e58852af.js"),["assets/bat_api-e58852af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-260d9b94.js"),["assets/bat_modbus-260d9b94.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-73783603.js"),["assets/counter-73783603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-180a64ef.js"),["assets/bat-180a64ef.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-1905ec77.js"),["assets/counter-1905ec77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-d5ca1a80.js"),["assets/inverter-d5ca1a80.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-c0f3f4ac.js"),["assets/counter-c0f3f4ac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-00ec4a93.js"),["assets/counter-00ec4a93.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-ba59974f.js"),["assets/inverter-ba59974f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-98ed6e35.js"),["assets/inverter-98ed6e35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-ae3c4375.js b/web/settings/assets/HardwareInstallation-ae3c4375.js deleted file mode 100644 index ca4ec49cc4..0000000000 --- a/web/settings/assets/HardwareInstallation-ae3c4375.js +++ /dev/null @@ -1 +0,0 @@ -import{l as N,d as U,t as G,Q as F,R as H,K as J,L as Q,M as Z,F as $}from"./vendor-fortawesome-532a6e75.js";import{_ as e,C as X}from"./index-451d2d20.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-f89e85e8.js"),["assets/bat-f89e85e8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-5c24ebc7.js"),["assets/counter-5c24ebc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-832936bd.js"),["assets/inverter-832936bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-701b11a5.js"),["assets/bat-701b11a5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-122dd37a.js"),["assets/counter-122dd37a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-3a87b7e0.js"),["assets/external_inverter-3a87b7e0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-00a09c36.js"),["assets/inverter-00a09c36.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-0735bfb3.js"),["assets/bat-0735bfb3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-74542c06.js"),["assets/counter-74542c06.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-96604727.js"),["assets/counter-96604727.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-47ad48de.js"),["assets/inverter-47ad48de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-1edb0ead.js"),["assets/bat-1edb0ead.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-3aa24e62.js"),["assets/counter-3aa24e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-fc2cb871.js"),["assets/external_inverter-fc2cb871.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-695b5c53.js"),["assets/inverter-695b5c53.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-f3278b0c.js"),["assets/counter-f3278b0c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-3639b6ee.js"),["assets/inverter-3639b6ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-9e87a8db.js"),["assets/bat-9e87a8db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-e3b8a3fa.js"),["assets/counter-e3b8a3fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-67becac8.js"),["assets/inverter-67becac8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-c9c9c592.js"),["assets/bat-c9c9c592.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-764584ba.js"),["assets/counter_s0-764584ba.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ea82381f.js"),["assets/counter_sm-ea82381f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-151fa9c5.js"),["assets/inverter-151fa9c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fe54661f.js"),["assets/bat-fe54661f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-87037b08.js"),["assets/counter-87037b08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d4107377.js"),["assets/inverter-d4107377.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-aaa94877.js"),["assets/bat-aaa94877.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-b5fad35e.js"),["assets/counter-b5fad35e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-26fc0c4d.js"),["assets/inverter-26fc0c4d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-d3c76890.js"),["assets/bat-d3c76890.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-30000cd2.js"),["assets/counter-30000cd2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-5c832d19.js"),["assets/inverter-5c832d19.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-29ac2dbe.js"),["assets/counter-29ac2dbe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-4f8ed3c9.js"),["assets/bat-4f8ed3c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-c8a6ec77.js"),["assets/counter-c8a6ec77.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-c3c11140.js"),["assets/inverter-c3c11140.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-34bc9327.js"),["assets/counter-34bc9327.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-3849924d.js"),["assets/inverter-3849924d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-3067b8de.js"),["assets/inverter-3067b8de.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-8594bebd.js"),["assets/bat-8594bebd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e9ec98c5.js"),["assets/counter-e9ec98c5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-0769e573.js"),["assets/inverter-0769e573.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-6d9b8554.js"),["assets/counter-6d9b8554.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ef72abc7.js"),["assets/inverter-ef72abc7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-9ba92541.js"),["assets/bat-9ba92541.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-8003bfd1.js"),["assets/counter-8003bfd1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-dfa572d8.js"),["assets/inverter-dfa572d8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-f7664e62.js"),["assets/bat-f7664e62.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-2daf569f.js"),["assets/counter-2daf569f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-eee1527f.js"),["assets/inverter-eee1527f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-99ab2b7b.js"),["assets/bat-99ab2b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-de9e7863.js"),["assets/bat-de9e7863.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-43fc77fa.js"),["assets/counter-43fc77fa.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-71041bec.js"),["assets/inverter-71041bec.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-10d8c398.js"),["assets/bat-10d8c398.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-87be6226.js"),["assets/counter-87be6226.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-5a43761c.js"),["assets/inverter-5a43761c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-428bf3c7.js"),["assets/inverter-428bf3c7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-091a96b7.js"),["assets/counter-091a96b7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-fabd24ac.js"),["assets/inverter-fabd24ac.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-8fdb9d26.js"),["assets/counter-8fdb9d26.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-1bbefb9c.js"),["assets/inverter-1bbefb9c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-e7a43b7b.js"),["assets/bat-e7a43b7b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-66249572.js"),["assets/counter-66249572.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-e440b330.js"),["assets/inverter-e440b330.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-1761bb8c.js"),["assets/bat-1761bb8c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-8741a800.js"),["assets/counter-8741a800.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-7c9d893d.js"),["assets/inverter-7c9d893d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-974e5d23.js"),["assets/bat-974e5d23.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-04c6e1e4.js"),["assets/inverter-04c6e1e4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-5a3aee6e.js"),["assets/bat-5a3aee6e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-fa32a0cf.js"),["assets/counter-fa32a0cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-1bcb55bc.js"),["assets/inverter-1bcb55bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-373a1c10.js"),["assets/counter-373a1c10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-596d7121.js"),["assets/counter-596d7121.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6bf21593.js"),["assets/inverter-6bf21593.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e372d758.js"),["assets/bat-e372d758.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-040c23a4.js"),["assets/bat_smart_energy-040c23a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f3c9c7a.js"),["assets/counter-9f3c9c7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-44c42273.js"),["assets/inverter-44c42273.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d030cd24.js"),["assets/bat-d030cd24.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-d426b124.js"),["assets/inverter-d426b124.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-2d7380c9.js"),["assets/counter-2d7380c9.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-33d71d7c.js"),["assets/inverter-33d71d7c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-dc035a3e.js"),["assets/counter-dc035a3e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-ebca198b.js"),["assets/counter-ebca198b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-ac056d1d.js"),["assets/inverter-ac056d1d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-e44eee41.js"),["assets/counter-e44eee41.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-239362ff.js"),["assets/inverter-239362ff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0f0a85bc.js"),["assets/bat-0f0a85bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-be7ebe08.js"),["assets/counter-be7ebe08.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-b84b910e.js"),["assets/inverter-b84b910e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-1aee48a7.js"),["assets/counter-1aee48a7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e06fd605.js"),["assets/inverter-e06fd605.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-ad02ebbd.js"),["assets/bat-ad02ebbd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2d2082cf.js"),["assets/counter-2d2082cf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-79f2751a.js"),["assets/external_inverter-79f2751a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-a6ddec85.js"),["assets/inverter-a6ddec85.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-57cb095c.js"),["assets/bat-57cb095c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a3407794.js"),["assets/inverter-a3407794.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-dc75c3bc.js"),["assets/bat-dc75c3bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-1dc0e174.js"),["assets/counter-1dc0e174.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-b8fdf4a4.js"),["assets/inverter-b8fdf4a4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-41d251bc.js"),["assets/bat-41d251bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-333c1a6d.js"),["assets/counter-333c1a6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-23c62af1.js"),["assets/inverter-23c62af1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-2cb7fcb7.js"),["assets/bat-2cb7fcb7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-bc58fc73.js"),["assets/inverter-bc58fc73.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-86e9bc80.js"),["assets/bat-86e9bc80.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-27a9c2ee.js"),["assets/counter-27a9c2ee.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-78f559db.js"),["assets/inverter-78f559db.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-a15db0a0.js"),["assets/inverter-a15db0a0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-94ced6ef.js"),["assets/bat-94ced6ef.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-88eb412e.js"),["assets/counter-88eb412e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-89f2126b.js"),["assets/inverter-89f2126b.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-83f4eb5d.js"),["assets/bat_api-83f4eb5d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-b77c2017.js"),["assets/bat_modbus-b77c2017.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-836555cd.js"),["assets/counter-836555cd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-374aadf3.js"),["assets/bat-374aadf3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-d6b54631.js"),["assets/counter-d6b54631.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-6f9c66d1.js"),["assets/inverter-6f9c66d1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-bac10632.js"),["assets/counter-bac10632.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-36353861.js"),["assets/counter-36353861.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-36547adc.js"),["assets/inverter-36547adc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-106f6b2a.js"),["assets/inverter-106f6b2a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-cbdcd521.js"),["assets/device-cbdcd521.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-163e7968.js"),["assets/device-163e7968.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-d70aa0bc.js"),["assets/device-d70aa0bc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-fd68e523.js"),["assets/device-fd68e523.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ee213d99.js"),["assets/device-ee213d99.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7f8802d.js"),["assets/device-c7f8802d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-7db846be.js"),["assets/device-7db846be.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-97a184d3.js"),["assets/device-97a184d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-e48058b2.js"),["assets/device-e48058b2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-38cd05bd.js"),["assets/device-38cd05bd.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-711c4142.js"),["assets/device-711c4142.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-cbc50bc1.js"),["assets/device-cbc50bc1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-d3af1afc.js"),["assets/device-d3af1afc.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-aba64669.js"),["assets/device-aba64669.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-805a57b1.js"),["assets/device-805a57b1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-91bdc917.js"),["assets/device-91bdc917.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-5eae489e.js"),["assets/device-5eae489e.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-1da87f6d.js"),["assets/device-1da87f6d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-658cf7d5.js"),["assets/device-658cf7d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b9e954eb.js"),["assets/device-b9e954eb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-217340a2.js"),["assets/device-217340a2.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-81fa6cad.js"),["assets/device-81fa6cad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-4674babe.js"),["assets/device-4674babe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-2677ebed.js"),["assets/device-2677ebed.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-8c005647.js"),["assets/device-8c005647.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-3d5e6b95.js"),["assets/device-3d5e6b95.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-ed00b326.js"),["assets/device-ed00b326.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-ff40d8e1.js"),["assets/device-ff40d8e1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-aa08fc7f.js"),["assets/device-aa08fc7f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-b78ab975.js"),["assets/device-b78ab975.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-6b6351d4.js"),["assets/device-6b6351d4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-796f2679.js"),["assets/device-796f2679.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-8d3984b8.js"),["assets/device-8d3984b8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-007ca4fb.js"),["assets/device-007ca4fb.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-50e6b066.js"),["assets/device-50e6b066.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-f7ed291a.js"),["assets/device-f7ed291a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-d77016c1.js"),["assets/device-d77016c1.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-26d1cd71.js"),["assets/device-26d1cd71.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-99280bbf.js"),["assets/device-99280bbf.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-ae95c2d3.js"),["assets/device-ae95c2d3.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-e85a7920.js"),["assets/device-e85a7920.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0ac32d64.js"),["assets/device-0ac32d64.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-27f1f947.js"),["assets/device-27f1f947.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-a55b29f8.js"),["assets/device-a55b29f8.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-7eb7f018.js"),["assets/device-7eb7f018.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-bfe71246.js"),["assets/device-bfe71246.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9507155a.js"),["assets/device-9507155a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f0ead4af.js"),["assets/device-f0ead4af.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-2637042f.js"),["assets/device-2637042f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1ae9d038.js"),["assets/device-1ae9d038.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-c7f03dad.js"),["assets/device-c7f03dad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-8eeabc14.js"),["assets/device-8eeabc14.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-e4295529.js"),["assets/device-e4295529.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-e3c08fb4.js"),["assets/device-e3c08fb4.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-b4c7f099.js"),["assets/device-b4c7f099.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-774e8229.js"),["assets/device-774e8229.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Q,Z);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-1957a26d.js b/web/settings/assets/InstantChargeConfig-676664f2.js similarity index 84% rename from web/settings/assets/InstantChargeConfig-1957a26d.js rename to web/settings/assets/InstantChargeConfig-676664f2.js index ccba6e1260..2289b8a848 100644 --- a/web/settings/assets/InstantChargeConfig-1957a26d.js +++ b/web/settings/assets/InstantChargeConfig-676664f2.js @@ -1 +1 @@ -import{C as l}from"./index-451d2d20.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-fc7a54eb.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-8d508618.js b/web/settings/assets/LegalSettings-3159f92a.js similarity index 84% rename from web/settings/assets/LegalSettings-8d508618.js rename to web/settings/assets/LegalSettings-3159f92a.js index 61a3154145..6011c6d209 100644 --- a/web/settings/assets/LegalSettings-8d508618.js +++ b/web/settings/assets/LegalSettings-3159f92a.js @@ -1 +1 @@ -import{C as g}from"./index-451d2d20.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-fc7a54eb.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-b175e1b1.js b/web/settings/assets/LoadManagementConfig-9bdba699.js similarity index 95% rename from web/settings/assets/LoadManagementConfig-b175e1b1.js rename to web/settings/assets/LoadManagementConfig-9bdba699.js index c63808dd04..64eb13cdd7 100644 --- a/web/settings/assets/LoadManagementConfig-b175e1b1.js +++ b/web/settings/assets/LoadManagementConfig-9bdba699.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-532a6e75.js";import{C as $}from"./index-451d2d20.js";import{S as x}from"./OpenwbSortableList-7d137bb0.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as $}from"./index-fc7a54eb.js";import{S as x}from"./OpenwbSortableList-8561f9a9.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-97b2414e.js b/web/settings/assets/MqttBridgeConfig-2808894f.js similarity index 92% rename from web/settings/assets/MqttBridgeConfig-97b2414e.js rename to web/settings/assets/MqttBridgeConfig-2808894f.js index c12e713187..f9f507c557 100644 --- a/web/settings/assets/MqttBridgeConfig-97b2414e.js +++ b/web/settings/assets/MqttBridgeConfig-2808894f.js @@ -1 +1 @@ -import{l as C,d as q,R as A,F as z}from"./vendor-fortawesome-532a6e75.js";import{C as D}from"./index-451d2d20.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},R=["name"],$=v(()=>f("hr",null,null,-1)),O=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),$,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),O,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,R))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as D}from"./index-fc7a54eb.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=v(()=>f("hr",null,null,-1)),R=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OpenwbSortableList-15b0be17.css b/web/settings/assets/OpenwbSortableList-15b0be17.css new file mode 100644 index 0000000000..b7b60467f2 --- /dev/null +++ b/web/settings/assets/OpenwbSortableList-15b0be17.css @@ -0,0 +1 @@ +.dragArea[data-v-82c9421a]{min-height:40px;color:#e9ecef;list-style-type:none;border:1px solid var(--secondary);border-radius:3px;padding:0}.dragArea ul[data-v-82c9421a]{background-color:var(--light)}.dragArea li[data-v-82c9421a]{position:relative;top:0px;left:0px;padding-left:40px;margin:5px;border:1px solid var(--dark);border-radius:3px;background-color:var(--dark)}.handle[data-v-82c9421a]{float:left;background-position:center center;background-repeat:no-repeat;margin-left:-35px;margin-right:5px;font-size:1.1em;color:var(--light);cursor:pointer}.element-titel[data-v-82c9421a]{display:flex;justify-content:space-between;padding:7px;background:var(--info)}.element-titel.counter[data-v-82c9421a]{background-color:var(--danger)}.element-titel.charge-point[data-v-82c9421a]{background-color:var(--primary)}.element-titel.inverter[data-v-82c9421a]{background-color:var(--success)}.element-titel.battery[data-v-82c9421a]{background-color:var(--warning);color:var(--dark)}.element-actions[data-v-82c9421a]{cursor:pointer} diff --git a/web/settings/assets/OpenwbSortableList-7ba533e4.css b/web/settings/assets/OpenwbSortableList-7ba533e4.css deleted file mode 100644 index b8b7f3ea25..0000000000 --- a/web/settings/assets/OpenwbSortableList-7ba533e4.css +++ /dev/null @@ -1 +0,0 @@ -.dragArea[data-v-82c9421a]{min-height:40px;color:#e9ecef;list-style-type:none;border:1px solid var(--secondary);border-radius:3px;padding:0}.dragArea ul[data-v-82c9421a]{background-color:var(--light)}.dragArea li[data-v-82c9421a]{position:relative;top:0;left:0;padding-left:40px;margin:5px;border:1px solid var(--dark);border-radius:3px;background-color:var(--dark)}.handle[data-v-82c9421a]{float:left;background-position:center center;background-repeat:no-repeat;margin-left:-35px;margin-right:5px;font-size:1.1em;color:var(--light);cursor:pointer}.element-titel[data-v-82c9421a]{display:flex;justify-content:space-between;padding:7px;background:var(--info)}.element-titel.counter[data-v-82c9421a]{background-color:var(--danger)}.element-titel.charge-point[data-v-82c9421a]{background-color:var(--primary)}.element-titel.inverter[data-v-82c9421a]{background-color:var(--success)}.element-titel.battery[data-v-82c9421a]{background-color:var(--warning);color:var(--dark)}.element-actions[data-v-82c9421a]{cursor:pointer} diff --git a/web/settings/assets/OpenwbSortableList-7d137bb0.js b/web/settings/assets/OpenwbSortableList-8561f9a9.js similarity index 94% rename from web/settings/assets/OpenwbSortableList-7d137bb0.js rename to web/settings/assets/OpenwbSortableList-8561f9a9.js index 718a810c55..861577c200 100644 --- a/web/settings/assets/OpenwbSortableList-7d137bb0.js +++ b/web/settings/assets/OpenwbSortableList-8561f9a9.js @@ -1,4 +1,4 @@ -import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-59c39d33.js";import{l as v,a4 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-532a6e75.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` +import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-94ac8c48.js";import{l as v,a5 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-ad83e535.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` [a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-65aaa96a.js"),["assets/displayTheme-65aaa96a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-fc7a54eb.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-af0ce411.js"),["assets/displayTheme-af0ce411.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-fc7a54eb.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-e30b140f.js b/web/settings/assets/ScheduledChargeConfig-7c8c846d.js similarity index 85% rename from web/settings/assets/ScheduledChargeConfig-e30b140f.js rename to web/settings/assets/ScheduledChargeConfig-7c8c846d.js index 0896782c7b..2758f55fb6 100644 --- a/web/settings/assets/ScheduledChargeConfig-e30b140f.js +++ b/web/settings/assets/ScheduledChargeConfig-7c8c846d.js @@ -1 +1 @@ -import{C as g}from"./index-451d2d20.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-fc7a54eb.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-73741289.js b/web/settings/assets/Status-73741289.js deleted file mode 100644 index 606e277750..0000000000 --- a/web/settings/assets/Status-73741289.js +++ /dev/null @@ -1 +0,0 @@ -import{l as N,G as q,H as C,c as L,I as S,J as V,K as A,L as P,M as Z,F as D}from"./vendor-fortawesome-532a6e75.js";import{C as H}from"./index-451d2d20.js";import{_ as M,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as z,R as E,q as v}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";N.add(q,C,L,S,V,A,P,Z);const F={name:"OpenwbStatus",mixins:[H],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(z("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),l=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(a.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(l,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(l,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(l,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,a=>(i(),u(g,{key:a.id,title:a.name+" (ID: "+a.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+a.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(l,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(l,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/voltages",1)},null,8,["model-value"]),t(l,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/currents",2)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(l,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(l,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,a=>(i(),u(g,{key:a.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(a.name)+" (ID: "+p(a.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+a.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(l,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(l,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(l,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(a,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(a)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(l,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=M(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Status-7ee068bd.js b/web/settings/assets/Status-7ee068bd.js new file mode 100644 index 0000000000..23c850da77 --- /dev/null +++ b/web/settings/assets/Status-7ee068bd.js @@ -0,0 +1 @@ +import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-ad83e535.js";import{C as Z}from"./index-fc7a54eb.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-86e0f1ee.js b/web/settings/assets/Support-8e52ed51.js similarity index 94% rename from web/settings/assets/Support-86e0f1ee.js rename to web/settings/assets/Support-8e52ed51.js index 564e8bc8ce..ec88a2a49e 100644 --- a/web/settings/assets/Support-86e0f1ee.js +++ b/web/settings/assets/Support-8e52ed51.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-532a6e75.js";import{C as B}from"./index-451d2d20.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-ad83e535.js";import{C as B}from"./index-fc7a54eb.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-13142ce3.js b/web/settings/assets/System-13142ce3.js deleted file mode 100644 index df8c380eb7..0000000000 --- a/web/settings/assets/System-13142ce3.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,Z as S,p as q,_ as C,O as A,$,F as x}from"./vendor-fortawesome-532a6e75.js";import{C as E}from"./index-451d2d20.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),Z=u(()=>a("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)),R={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,Z,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",R,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/System-765e2323.js b/web/settings/assets/System-765e2323.js new file mode 100644 index 0000000000..56a0538f91 --- /dev/null +++ b/web/settings/assets/System-765e2323.js @@ -0,0 +1 @@ +import{l as W,_ as S,p as q,$ as C,O as A,a0 as $,F as x}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-fc7a54eb.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),R=u(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,R,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",Z,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/TestingStore-de474301.js b/web/settings/assets/TestingStore-ba263cde.js similarity index 95% rename from web/settings/assets/TestingStore-de474301.js rename to web/settings/assets/TestingStore-ba263cde.js index d479245012..4b9fe2542e 100644 --- a/web/settings/assets/TestingStore-de474301.js +++ b/web/settings/assets/TestingStore-ba263cde.js @@ -1 +1 @@ -import{C as h}from"./index-451d2d20.js";import{S as y}from"./OpenwbSortableList-7d137bb0.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-fc7a54eb.js";import{S as y}from"./OpenwbSortableList-8561f9a9.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-f11d8cfe.js b/web/settings/assets/TimeChargeConfig-ef284125.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-f11d8cfe.js rename to web/settings/assets/TimeChargeConfig-ef284125.js index 07f13f7953..d322f9c44f 100644 --- a/web/settings/assets/TimeChargeConfig-f11d8cfe.js +++ b/web/settings/assets/TimeChargeConfig-ef284125.js @@ -1 +1 @@ -import{C as l}from"./index-451d2d20.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-59c39d33.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-fc7a54eb.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-2c445ee2.js b/web/settings/assets/VehicleConfig-322b25b7.js similarity index 52% rename from web/settings/assets/VehicleConfig-2c445ee2.js rename to web/settings/assets/VehicleConfig-322b25b7.js index d6ddfea7b4..2e2c2e3210 100644 --- a/web/settings/assets/VehicleConfig-2c445ee2.js +++ b/web/settings/assets/VehicleConfig-322b25b7.js @@ -1 +1 @@ -import{l as $,d as H,R as j,A as J,S as G,T as Q,z as X,K as Y,W as K,I as ee,U as te,X as ae,F as ne,V as le}from"./vendor-fortawesome-532a6e75.js";import{_ as S,C as ie}from"./index-451d2d20.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as f,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-59c39d33.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";import"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-a27fc177.js"),["assets/vehicle-a27fc177.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-0b6d061a.js"),["assets/vehicle-0b6d061a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-56b3de10.js"),["assets/vehicle-56b3de10.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-d1763e7a.js"),["assets/vehicle-d1763e7a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-7df8b393.js"),["assets/vehicle-7df8b393.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-4249fcff.js"),["assets/vehicle-4249fcff.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-d98ffef7.js"),["assets/vehicle-d98ffef7.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-67509117.js"),["assets/vehicle-67509117.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-391df8d0.js"),["assets/vehicle-391df8d0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-df2230d5.js"),["assets/vehicle-df2230d5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-75667aad.js"),["assets/vehicle-75667aad.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-39e57c4c.js"),["assets/vehicle-39e57c4c.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-1660eacd.js","assets/index-451d2d20.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-b9c60ee5.js"),["assets/vehicle-b9c60ee5.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function be(e,o,p,E,v,m){return r(),f(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const fe=D(pe,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),f(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),f(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),f(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),f(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" Fahrzeuge mit Priorität werden bevorzugt geladen. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, werden auch Fahrzeuge ohne Priorität geladen. ")]),_: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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),f(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),f(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),f(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),f(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),f(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),f(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),f(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),f(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),f(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const bt=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{bt as default}; +import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-ad83e535.js";import{_ as S,C as ie}from"./index-fc7a54eb.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-c865f314.js"),["assets/vehicle-c865f314.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-2c5d967c.js"),["assets/vehicle-2c5d967c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-b76d2976.js"),["assets/vehicle-b76d2976.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0247f03c.js"),["assets/vehicle-0247f03c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-189fc2cb.js"),["assets/vehicle-189fc2cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-8bdcc244.js"),["assets/vehicle-8bdcc244.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-6f02cb37.js"),["assets/vehicle-6f02cb37.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-84dd6d0d.js"),["assets/vehicle-84dd6d0d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-174df8ec.js"),["assets/vehicle-174df8ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-316d265a.js"),["assets/vehicle-316d265a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-0969da15.js"),["assets/vehicle-0969da15.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-a2646a86.js"),["assets/vehicle-a2646a86.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-dc63434e.js","assets/index-fc7a54eb.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-f74618cf.js"),["assets/vehicle-f74618cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; diff --git a/web/settings/assets/backup_cloud-e2986e8e.js b/web/settings/assets/backup_cloud-e0f3013d.js similarity index 92% rename from web/settings/assets/backup_cloud-e2986e8e.js rename to web/settings/assets/backup_cloud-e0f3013d.js index 4c0b1db39f..fc2a8560b3 100644 --- a/web/settings/assets/backup_cloud-e2986e8e.js +++ b/web/settings/assets/backup_cloud-e0f3013d.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; diff --git a/web/settings/assets/backup_cloud-e42eb0f9.js b/web/settings/assets/backup_cloud-f1ce5010.js similarity index 96% rename from web/settings/assets/backup_cloud-e42eb0f9.js rename to web/settings/assets/backup_cloud-f1ce5010.js index d3cbb2154d..022420779a 100644 --- a/web/settings/assets/backup_cloud-e42eb0f9.js +++ b/web/settings/assets/backup_cloud-f1ce5010.js @@ -1 +1 @@ -import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),C=u("br",null,null,-1),y=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB autorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),C,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),y,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),C=u("br",null,null,-1),y=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB autorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),C,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),y,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/bat-974e5d23.js b/web/settings/assets/bat-12170e78.js similarity index 86% rename from web/settings/assets/bat-974e5d23.js rename to web/settings/assets/bat-12170e78.js index 6be248526d..deec001c7a 100644 --- a/web/settings/assets/bat-974e5d23.js +++ b/web/settings/assets/bat-12170e78.js @@ -1 +1 @@ -import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; +import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-374aadf3.js b/web/settings/assets/bat-180a64ef.js similarity index 87% rename from web/settings/assets/bat-374aadf3.js rename to web/settings/assets/bat-180a64ef.js index d6899f5132..ecf82c57ba 100644 --- a/web/settings/assets/bat-374aadf3.js +++ b/web/settings/assets/bat-180a64ef.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-f7664e62.js b/web/settings/assets/bat-212960fc.js similarity index 94% rename from web/settings/assets/bat-f7664e62.js rename to web/settings/assets/bat-212960fc.js index 0d8a9b746a..fe61d44def 100644 --- a/web/settings/assets/bat-f7664e62.js +++ b/web/settings/assets/bat-212960fc.js @@ -1 +1 @@ -import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; +import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-aaa94877.js b/web/settings/assets/bat-2f8005f2.js similarity index 96% rename from web/settings/assets/bat-aaa94877.js rename to web/settings/assets/bat-2f8005f2.js index 00fe921c46..eb2fbcf9ce 100644 --- a/web/settings/assets/bat-aaa94877.js +++ b/web/settings/assets/bat-2f8005f2.js @@ -1 +1 @@ -import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; +import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-701b11a5.js b/web/settings/assets/bat-3980db8f.js similarity index 86% rename from web/settings/assets/bat-701b11a5.js rename to web/settings/assets/bat-3980db8f.js index 6d7f056add..db69e69cf2 100644 --- a/web/settings/assets/bat-701b11a5.js +++ b/web/settings/assets/bat-3980db8f.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-de9e7863.js b/web/settings/assets/bat-3d2b7acc.js similarity index 88% rename from web/settings/assets/bat-de9e7863.js rename to web/settings/assets/bat-3d2b7acc.js index cf06c02ea2..12b06b8e58 100644 --- a/web/settings/assets/bat-de9e7863.js +++ b/web/settings/assets/bat-3d2b7acc.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{k as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-86e9bc80.js b/web/settings/assets/bat-3dbfaf1b.js similarity index 86% rename from web/settings/assets/bat-86e9bc80.js rename to web/settings/assets/bat-3dbfaf1b.js index 0626002506..ef094f8082 100644 --- a/web/settings/assets/bat-86e9bc80.js +++ b/web/settings/assets/bat-3dbfaf1b.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-99ab2b7b.js b/web/settings/assets/bat-3e58123d.js similarity index 88% rename from web/settings/assets/bat-99ab2b7b.js rename to web/settings/assets/bat-3e58123d.js index 8c9d48f03c..2a91e5a279 100644 --- a/web/settings/assets/bat-99ab2b7b.js +++ b/web/settings/assets/bat-3e58123d.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{k as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-1edb0ead.js b/web/settings/assets/bat-4320b5cc.js similarity index 85% rename from web/settings/assets/bat-1edb0ead.js rename to web/settings/assets/bat-4320b5cc.js index a5918ec61a..369fb80979 100644 --- a/web/settings/assets/bat-1edb0ead.js +++ b/web/settings/assets/bat-4320b5cc.js @@ -1 +1 @@ -import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-8594bebd.js b/web/settings/assets/bat-45b559ec.js similarity index 93% rename from web/settings/assets/bat-8594bebd.js rename to web/settings/assets/bat-45b559ec.js index e12c639625..5a71bfd621 100644 --- a/web/settings/assets/bat-8594bebd.js +++ b/web/settings/assets/bat-45b559ec.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; +import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-d030cd24.js b/web/settings/assets/bat-4b5ddf83.js similarity index 86% rename from web/settings/assets/bat-d030cd24.js rename to web/settings/assets/bat-4b5ddf83.js index 7418c40bdb..73960395ed 100644 --- a/web/settings/assets/bat-d030cd24.js +++ b/web/settings/assets/bat-4b5ddf83.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-e7a43b7b.js b/web/settings/assets/bat-557284f3.js similarity index 86% rename from web/settings/assets/bat-e7a43b7b.js rename to web/settings/assets/bat-557284f3.js index ff455b9147..859f6b4c1b 100644 --- a/web/settings/assets/bat-e7a43b7b.js +++ b/web/settings/assets/bat-557284f3.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-1761bb8c.js b/web/settings/assets/bat-61bcf2f8.js similarity index 85% rename from web/settings/assets/bat-1761bb8c.js rename to web/settings/assets/bat-61bcf2f8.js index 4d2b101ad0..28302202c1 100644 --- a/web/settings/assets/bat-1761bb8c.js +++ b/web/settings/assets/bat-61bcf2f8.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-2cb7fcb7.js b/web/settings/assets/bat-6fcf71db.js similarity index 86% rename from web/settings/assets/bat-2cb7fcb7.js rename to web/settings/assets/bat-6fcf71db.js index 24868abeb2..c24006c1c6 100644 --- a/web/settings/assets/bat-2cb7fcb7.js +++ b/web/settings/assets/bat-6fcf71db.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-c9c9c592.js b/web/settings/assets/bat-80bc8859.js similarity index 87% rename from web/settings/assets/bat-c9c9c592.js rename to web/settings/assets/bat-80bc8859.js index f32a1eb37b..f39ba7fd7c 100644 --- a/web/settings/assets/bat-c9c9c592.js +++ b/web/settings/assets/bat-80bc8859.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-0f0a85bc.js b/web/settings/assets/bat-8af3358d.js similarity index 86% rename from web/settings/assets/bat-0f0a85bc.js rename to web/settings/assets/bat-8af3358d.js index 7db03f6844..51c0da0e7a 100644 --- a/web/settings/assets/bat-0f0a85bc.js +++ b/web/settings/assets/bat-8af3358d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-9ba92541.js b/web/settings/assets/bat-904c9172.js similarity index 85% rename from web/settings/assets/bat-9ba92541.js rename to web/settings/assets/bat-904c9172.js index 299361a024..45e732be06 100644 --- a/web/settings/assets/bat-9ba92541.js +++ b/web/settings/assets/bat-904c9172.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-dc75c3bc.js b/web/settings/assets/bat-9ff121c5.js similarity index 86% rename from web/settings/assets/bat-dc75c3bc.js rename to web/settings/assets/bat-9ff121c5.js index 7937b419b6..32f773d874 100644 --- a/web/settings/assets/bat-dc75c3bc.js +++ b/web/settings/assets/bat-9ff121c5.js @@ -1 +1 @@ -import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; +import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-f89e85e8.js b/web/settings/assets/bat-a92f022e.js similarity index 86% rename from web/settings/assets/bat-f89e85e8.js rename to web/settings/assets/bat-a92f022e.js index 4d61e35e01..6237fab3e0 100644 --- a/web/settings/assets/bat-f89e85e8.js +++ b/web/settings/assets/bat-a92f022e.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-9e87a8db.js b/web/settings/assets/bat-ac5ee104.js similarity index 87% rename from web/settings/assets/bat-9e87a8db.js rename to web/settings/assets/bat-ac5ee104.js index 274b288996..6010f5cbb2 100644 --- a/web/settings/assets/bat-9e87a8db.js +++ b/web/settings/assets/bat-ac5ee104.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-57cb095c.js b/web/settings/assets/bat-b91f4e63.js similarity index 90% rename from web/settings/assets/bat-57cb095c.js rename to web/settings/assets/bat-b91f4e63.js index e34faad463..d8cb8ea4dc 100644 --- a/web/settings/assets/bat-57cb095c.js +++ b/web/settings/assets/bat-b91f4e63.js @@ -1 +1 @@ -import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-10d8c398.js b/web/settings/assets/bat-ba791935.js similarity index 90% rename from web/settings/assets/bat-10d8c398.js rename to web/settings/assets/bat-ba791935.js index 8223b67ba1..2903f3ec33 100644 --- a/web/settings/assets/bat-10d8c398.js +++ b/web/settings/assets/bat-ba791935.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-e372d758.js b/web/settings/assets/bat-cb226603.js similarity index 86% rename from web/settings/assets/bat-e372d758.js rename to web/settings/assets/bat-cb226603.js index 12ba090af0..97c760edad 100644 --- a/web/settings/assets/bat-e372d758.js +++ b/web/settings/assets/bat-cb226603.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-5a3aee6e.js b/web/settings/assets/bat-cbc92919.js similarity index 86% rename from web/settings/assets/bat-5a3aee6e.js rename to web/settings/assets/bat-cbc92919.js index fd95429d1f..3e76c6784c 100644 --- a/web/settings/assets/bat-5a3aee6e.js +++ b/web/settings/assets/bat-cbc92919.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-d3c76890.js b/web/settings/assets/bat-ccba567b.js similarity index 86% rename from web/settings/assets/bat-d3c76890.js rename to web/settings/assets/bat-ccba567b.js index fcb3f72202..fa4a7c0253 100644 --- a/web/settings/assets/bat-d3c76890.js +++ b/web/settings/assets/bat-ccba567b.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-0735bfb3.js b/web/settings/assets/bat-d1af67af.js similarity index 85% rename from web/settings/assets/bat-0735bfb3.js rename to web/settings/assets/bat-d1af67af.js index eec115e327..44165f8fe1 100644 --- a/web/settings/assets/bat-0735bfb3.js +++ b/web/settings/assets/bat-d1af67af.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-ad02ebbd.js b/web/settings/assets/bat-e1949609.js similarity index 93% rename from web/settings/assets/bat-ad02ebbd.js rename to web/settings/assets/bat-e1949609.js index 1a599a958e..b216abc34a 100644 --- a/web/settings/assets/bat-ad02ebbd.js +++ b/web/settings/assets/bat-e1949609.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; +import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-41d251bc.js b/web/settings/assets/bat-f30697e9.js similarity index 86% rename from web/settings/assets/bat-41d251bc.js rename to web/settings/assets/bat-f30697e9.js index f0645392ac..e4923320df 100644 --- a/web/settings/assets/bat-41d251bc.js +++ b/web/settings/assets/bat-f30697e9.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-94ced6ef.js b/web/settings/assets/bat-f75dd877.js similarity index 86% rename from web/settings/assets/bat-94ced6ef.js rename to web/settings/assets/bat-f75dd877.js index 5acd924931..6d8c8c9075 100644 --- a/web/settings/assets/bat-94ced6ef.js +++ b/web/settings/assets/bat-f75dd877.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-4f8ed3c9.js b/web/settings/assets/bat-f9178e22.js similarity index 94% rename from web/settings/assets/bat-4f8ed3c9.js rename to web/settings/assets/bat-f9178e22.js index 0a0dffcf87..4b716ad31c 100644 --- a/web/settings/assets/bat-4f8ed3c9.js +++ b/web/settings/assets/bat-f9178e22.js @@ -1 +1 @@ -import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; +import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; diff --git a/web/settings/assets/bat-fe54661f.js b/web/settings/assets/bat-fd9f4fe4.js similarity index 86% rename from web/settings/assets/bat-fe54661f.js rename to web/settings/assets/bat-fd9f4fe4.js index 2da04e8e58..a11993f1ff 100644 --- a/web/settings/assets/bat-fe54661f.js +++ b/web/settings/assets/bat-fd9f4fe4.js @@ -1 +1 @@ -import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; +import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_api-83f4eb5d.js b/web/settings/assets/bat_api-e58852af.js similarity index 86% rename from web/settings/assets/bat_api-83f4eb5d.js rename to web/settings/assets/bat_api-e58852af.js index 0ea5ac87e0..8355ece399 100644 --- a/web/settings/assets/bat_api-83f4eb5d.js +++ b/web/settings/assets/bat_api-e58852af.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; +import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_modbus-b77c2017.js b/web/settings/assets/bat_modbus-260d9b94.js similarity index 86% rename from web/settings/assets/bat_modbus-b77c2017.js rename to web/settings/assets/bat_modbus-260d9b94.js index c717626317..5968b04745 100644 --- a/web/settings/assets/bat_modbus-b77c2017.js +++ b/web/settings/assets/bat_modbus-260d9b94.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_smart_energy-040c23a4.js b/web/settings/assets/bat_smart_energy-817c3655.js similarity index 87% rename from web/settings/assets/bat_smart_energy-040c23a4.js rename to web/settings/assets/bat_smart_energy-817c3655.js index 7a45a71558..ac63323d5e 100644 --- a/web/settings/assets/bat_smart_energy-040c23a4.js +++ b/web/settings/assets/bat_smart_energy-817c3655.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; diff --git a/web/settings/assets/chargePoint-a0a4acbf.js b/web/settings/assets/chargePoint-07057692.js similarity index 95% rename from web/settings/assets/chargePoint-a0a4acbf.js rename to web/settings/assets/chargePoint-07057692.js index 535af45d50..74208d95d8 100644 --- a/web/settings/assets/chargePoint-a0a4acbf.js +++ b/web/settings/assets/chargePoint-07057692.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; +import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-33a12343.js b/web/settings/assets/chargePoint-10f32a1a.js similarity index 94% rename from web/settings/assets/chargePoint-33a12343.js rename to web/settings/assets/chargePoint-10f32a1a.js index 892542c0d2..7eeae1a9d7 100644 --- a/web/settings/assets/chargePoint-33a12343.js +++ b/web/settings/assets/chargePoint-10f32a1a.js @@ -1 +1 @@ -import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; +import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-fe6ccb61.js b/web/settings/assets/chargePoint-4a124bb9.js similarity index 95% rename from web/settings/assets/chargePoint-fe6ccb61.js rename to web/settings/assets/chargePoint-4a124bb9.js index 5668492791..e75e5342ac 100644 --- a/web/settings/assets/chargePoint-fe6ccb61.js +++ b/web/settings/assets/chargePoint-4a124bb9.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; +import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-c1796cd6.js b/web/settings/assets/chargePoint-7200a105.js similarity index 98% rename from web/settings/assets/chargePoint-c1796cd6.js rename to web/settings/assets/chargePoint-7200a105.js index 98d1627d3f..96dfc7ae80 100644 --- a/web/settings/assets/chargePoint-c1796cd6.js +++ b/web/settings/assets/chargePoint-7200a105.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; +import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; diff --git a/web/settings/assets/chargePoint-651f8f5f.js b/web/settings/assets/chargePoint-80e648c2.js similarity index 84% rename from web/settings/assets/chargePoint-651f8f5f.js rename to web/settings/assets/chargePoint-80e648c2.js index 80e9c0143d..a80df6148f 100644 --- a/web/settings/assets/chargePoint-651f8f5f.js +++ b/web/settings/assets/chargePoint-80e648c2.js @@ -1 +1 @@ -import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; +import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-6a041309.js b/web/settings/assets/chargePoint-a56bc604.js similarity index 92% rename from web/settings/assets/chargePoint-6a041309.js rename to web/settings/assets/chargePoint-a56bc604.js index 68e386cf80..0dcf487e77 100644 --- a/web/settings/assets/chargePoint-6a041309.js +++ b/web/settings/assets/chargePoint-a56bc604.js @@ -1 +1 @@ -import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; +import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/commands-0085051f.js b/web/settings/assets/commands-516069c3.js similarity index 96% rename from web/settings/assets/commands-0085051f.js rename to web/settings/assets/commands-516069c3.js index 61e80bb806..639407fad1 100644 --- a/web/settings/assets/commands-0085051f.js +++ b/web/settings/assets/commands-516069c3.js @@ -1 +1 @@ -import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; +import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-36353861.js b/web/settings/assets/counter-00ec4a93.js similarity index 92% rename from web/settings/assets/counter-36353861.js rename to web/settings/assets/counter-00ec4a93.js index 657fa805bb..454d06a30f 100644 --- a/web/settings/assets/counter-36353861.js +++ b/web/settings/assets/counter-00ec4a93.js @@ -1 +1 @@ -import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; +import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-ebca198b.js b/web/settings/assets/counter-18fd3233.js similarity index 90% rename from web/settings/assets/counter-ebca198b.js rename to web/settings/assets/counter-18fd3233.js index a1ae631168..930c8d9c35 100644 --- a/web/settings/assets/counter-ebca198b.js +++ b/web/settings/assets/counter-18fd3233.js @@ -1 +1 @@ -import{_ as u,p as r,k as c,l as d,A as s,L as a,u as e,q as o,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},m={class:"device-solar_log-counter"},h={class:"small"},f=o("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),o("br")],-1),g=o("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(t,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",m,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),o("span",h,"(Modul: "+p(t.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[f,e(" 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 "),g,e(". ")]),_:1})])}const x=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; +import{_ as u,p as r,k as c,l as d,A as s,L as a,u as e,q as o,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},m={class:"device-solar_log-counter"},h={class:"small"},f=o("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),o("br")],-1),g=o("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(t,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",m,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),o("span",h,"(Modul: "+p(t.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[f,e(" 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 "),g,e(". ")]),_:1})])}const x=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-d6b54631.js b/web/settings/assets/counter-1905ec77.js similarity index 90% rename from web/settings/assets/counter-d6b54631.js rename to web/settings/assets/counter-1905ec77.js index 9fbd077e4e..be423eae70 100644 --- a/web/settings/assets/counter-d6b54631.js +++ b/web/settings/assets/counter-1905ec77.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; +import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-e44eee41.js b/web/settings/assets/counter-1c5a2313.js similarity index 86% rename from web/settings/assets/counter-e44eee41.js rename to web/settings/assets/counter-1c5a2313.js index c2cf10570e..1709da4472 100644 --- a/web/settings/assets/counter-e44eee41.js +++ b/web/settings/assets/counter-1c5a2313.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-43fc77fa.js b/web/settings/assets/counter-21f55471.js similarity index 88% rename from web/settings/assets/counter-43fc77fa.js rename to web/settings/assets/counter-21f55471.js index b7ca430815..54bfdac8a3 100644 --- a/web/settings/assets/counter-43fc77fa.js +++ b/web/settings/assets/counter-21f55471.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-2d2082cf.js b/web/settings/assets/counter-2365410a.js similarity index 91% rename from web/settings/assets/counter-2d2082cf.js rename to web/settings/assets/counter-2365410a.js index 955761add9..f6fc1cdafb 100644 --- a/web/settings/assets/counter-2d2082cf.js +++ b/web/settings/assets/counter-2365410a.js @@ -1 +1 @@ -import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; +import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-88eb412e.js b/web/settings/assets/counter-2a189926.js similarity index 87% rename from web/settings/assets/counter-88eb412e.js rename to web/settings/assets/counter-2a189926.js index fb29c57c41..b861c73281 100644 --- a/web/settings/assets/counter-88eb412e.js +++ b/web/settings/assets/counter-2a189926.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-8003bfd1.js b/web/settings/assets/counter-2e4fa5c2.js similarity index 86% rename from web/settings/assets/counter-8003bfd1.js rename to web/settings/assets/counter-2e4fa5c2.js index bbd2270982..b35644d58b 100644 --- a/web/settings/assets/counter-8003bfd1.js +++ b/web/settings/assets/counter-2e4fa5c2.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-091a96b7.js b/web/settings/assets/counter-3df9b0e7.js similarity index 88% rename from web/settings/assets/counter-091a96b7.js rename to web/settings/assets/counter-3df9b0e7.js index 169c01cddd..8d0b95711e 100644 --- a/web/settings/assets/counter-091a96b7.js +++ b/web/settings/assets/counter-3df9b0e7.js @@ -1 +1 @@ -import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; +import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-c8a6ec77.js b/web/settings/assets/counter-46a15c2b.js similarity index 96% rename from web/settings/assets/counter-c8a6ec77.js rename to web/settings/assets/counter-46a15c2b.js index d478b462f9..a33b0a7594 100644 --- a/web/settings/assets/counter-c8a6ec77.js +++ b/web/settings/assets/counter-46a15c2b.js @@ -1 +1 @@ -import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; +import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-8fdb9d26.js b/web/settings/assets/counter-46b207f3.js similarity index 91% rename from web/settings/assets/counter-8fdb9d26.js rename to web/settings/assets/counter-46b207f3.js index b2418bec3d..b195691698 100644 --- a/web/settings/assets/counter-8fdb9d26.js +++ b/web/settings/assets/counter-46b207f3.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-27a9c2ee.js b/web/settings/assets/counter-478d9577.js similarity index 90% rename from web/settings/assets/counter-27a9c2ee.js rename to web/settings/assets/counter-478d9577.js index fa531f9f54..e5aecd1845 100644 --- a/web/settings/assets/counter-27a9c2ee.js +++ b/web/settings/assets/counter-478d9577.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; +import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-1aee48a7.js b/web/settings/assets/counter-4dc3cbd5.js similarity index 93% rename from web/settings/assets/counter-1aee48a7.js rename to web/settings/assets/counter-4dc3cbd5.js index f714278c6e..027b62ede2 100644 --- a/web/settings/assets/counter-1aee48a7.js +++ b/web/settings/assets/counter-4dc3cbd5.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-dc035a3e.js b/web/settings/assets/counter-57df9eec.js similarity index 86% rename from web/settings/assets/counter-dc035a3e.js rename to web/settings/assets/counter-57df9eec.js index 29a2299749..27bcf0f7c4 100644 --- a/web/settings/assets/counter-dc035a3e.js +++ b/web/settings/assets/counter-57df9eec.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-6d9b8554.js b/web/settings/assets/counter-5b0b9661.js similarity index 88% rename from web/settings/assets/counter-6d9b8554.js rename to web/settings/assets/counter-5b0b9661.js index 979fc32228..37f5fdbaba 100644 --- a/web/settings/assets/counter-6d9b8554.js +++ b/web/settings/assets/counter-5b0b9661.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-5c24ebc7.js b/web/settings/assets/counter-60655200.js similarity index 86% rename from web/settings/assets/counter-5c24ebc7.js rename to web/settings/assets/counter-60655200.js index 4748923dea..cd01ce739c 100644 --- a/web/settings/assets/counter-5c24ebc7.js +++ b/web/settings/assets/counter-60655200.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-87be6226.js b/web/settings/assets/counter-6369ff43.js similarity index 90% rename from web/settings/assets/counter-87be6226.js rename to web/settings/assets/counter-6369ff43.js index 24e643ebe6..db0d8c931d 100644 --- a/web/settings/assets/counter-87be6226.js +++ b/web/settings/assets/counter-6369ff43.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,M,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{D as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,M,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-b5fad35e.js b/web/settings/assets/counter-6d0620dd.js similarity index 97% rename from web/settings/assets/counter-b5fad35e.js rename to web/settings/assets/counter-6d0620dd.js index 49711f6bce..2722b37d5e 100644 --- a/web/settings/assets/counter-b5fad35e.js +++ b/web/settings/assets/counter-6d0620dd.js @@ -1 +1 @@ -import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; +import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-596d7121.js b/web/settings/assets/counter-70b9e720.js similarity index 89% rename from web/settings/assets/counter-596d7121.js rename to web/settings/assets/counter-70b9e720.js index 6f8fd2a345..391ada4a1a 100644 --- a/web/settings/assets/counter-596d7121.js +++ b/web/settings/assets/counter-70b9e720.js @@ -1 +1 @@ -import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; +import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-836555cd.js b/web/settings/assets/counter-73783603.js similarity index 86% rename from web/settings/assets/counter-836555cd.js rename to web/settings/assets/counter-73783603.js index ada99df79b..5adc1a7640 100644 --- a/web/settings/assets/counter-836555cd.js +++ b/web/settings/assets/counter-73783603.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-66249572.js b/web/settings/assets/counter-77841659.js similarity index 86% rename from web/settings/assets/counter-66249572.js rename to web/settings/assets/counter-77841659.js index ed976ef352..89d12a83c3 100644 --- a/web/settings/assets/counter-66249572.js +++ b/web/settings/assets/counter-77841659.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-29ac2dbe.js b/web/settings/assets/counter-7a7be3d3.js similarity index 86% rename from web/settings/assets/counter-29ac2dbe.js rename to web/settings/assets/counter-7a7be3d3.js index cb630858ae..beaad797b1 100644 --- a/web/settings/assets/counter-29ac2dbe.js +++ b/web/settings/assets/counter-7a7be3d3.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-74542c06.js b/web/settings/assets/counter-7b85a5b2.js similarity index 86% rename from web/settings/assets/counter-74542c06.js rename to web/settings/assets/counter-7b85a5b2.js index 89248d9de6..939dcd124b 100644 --- a/web/settings/assets/counter-74542c06.js +++ b/web/settings/assets/counter-7b85a5b2.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-2daf569f.js b/web/settings/assets/counter-816c921e.js similarity index 96% rename from web/settings/assets/counter-2daf569f.js rename to web/settings/assets/counter-816c921e.js index 151098ded5..6e377493d4 100644 --- a/web/settings/assets/counter-2daf569f.js +++ b/web/settings/assets/counter-816c921e.js @@ -1 +1 @@ -import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; +import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; diff --git a/web/settings/assets/counter-fa32a0cf.js b/web/settings/assets/counter-82a793a2.js similarity index 86% rename from web/settings/assets/counter-fa32a0cf.js rename to web/settings/assets/counter-82a793a2.js index eb4971e375..f978233fb3 100644 --- a/web/settings/assets/counter-fa32a0cf.js +++ b/web/settings/assets/counter-82a793a2.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-30000cd2.js b/web/settings/assets/counter-8d4f402a.js similarity index 86% rename from web/settings/assets/counter-30000cd2.js rename to web/settings/assets/counter-8d4f402a.js index fa87cef5f1..cfdd8f17e6 100644 --- a/web/settings/assets/counter-30000cd2.js +++ b/web/settings/assets/counter-8d4f402a.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-87037b08.js b/web/settings/assets/counter-9097a073.js similarity index 86% rename from web/settings/assets/counter-87037b08.js rename to web/settings/assets/counter-9097a073.js index 2ed4ee4736..82e303d217 100644 --- a/web/settings/assets/counter-87037b08.js +++ b/web/settings/assets/counter-9097a073.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-34bc9327.js b/web/settings/assets/counter-ad208981.js similarity index 85% rename from web/settings/assets/counter-34bc9327.js rename to web/settings/assets/counter-ad208981.js index d019c2ec26..0a31e209f2 100644 --- a/web/settings/assets/counter-34bc9327.js +++ b/web/settings/assets/counter-ad208981.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-f3278b0c.js b/web/settings/assets/counter-af942561.js similarity index 88% rename from web/settings/assets/counter-f3278b0c.js rename to web/settings/assets/counter-af942561.js index 13acad6b55..6805ab1be9 100644 --- a/web/settings/assets/counter-f3278b0c.js +++ b/web/settings/assets/counter-af942561.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; diff --git a/web/settings/assets/counter-be7ebe08.js b/web/settings/assets/counter-b2081459.js similarity index 86% rename from web/settings/assets/counter-be7ebe08.js rename to web/settings/assets/counter-b2081459.js index 553254853a..a9faaacd25 100644 --- a/web/settings/assets/counter-be7ebe08.js +++ b/web/settings/assets/counter-b2081459.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-373a1c10.js b/web/settings/assets/counter-b30c239d.js similarity index 86% rename from web/settings/assets/counter-373a1c10.js rename to web/settings/assets/counter-b30c239d.js index f2fce3a239..7f7dfdf3d0 100644 --- a/web/settings/assets/counter-373a1c10.js +++ b/web/settings/assets/counter-b30c239d.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; diff --git a/web/settings/assets/counter-bac10632.js b/web/settings/assets/counter-c0f3f4ac.js similarity index 90% rename from web/settings/assets/counter-bac10632.js rename to web/settings/assets/counter-c0f3f4ac.js index de33854142..6262fffc03 100644 --- a/web/settings/assets/counter-bac10632.js +++ b/web/settings/assets/counter-c0f3f4ac.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; +import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-8741a800.js b/web/settings/assets/counter-d03b355d.js similarity index 85% rename from web/settings/assets/counter-8741a800.js rename to web/settings/assets/counter-d03b355d.js index a50d1080c7..8220673d78 100644 --- a/web/settings/assets/counter-8741a800.js +++ b/web/settings/assets/counter-d03b355d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-96604727.js b/web/settings/assets/counter-d335a007.js similarity index 90% rename from web/settings/assets/counter-96604727.js rename to web/settings/assets/counter-d335a007.js index 1325107ca5..5d32805921 100644 --- a/web/settings/assets/counter-96604727.js +++ b/web/settings/assets/counter-d335a007.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-e3b8a3fa.js b/web/settings/assets/counter-da58c807.js similarity index 86% rename from web/settings/assets/counter-e3b8a3fa.js rename to web/settings/assets/counter-da58c807.js index 54ee581a8a..08962e40a1 100644 --- a/web/settings/assets/counter-e3b8a3fa.js +++ b/web/settings/assets/counter-da58c807.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-333c1a6d.js b/web/settings/assets/counter-df3e561f.js similarity index 87% rename from web/settings/assets/counter-333c1a6d.js rename to web/settings/assets/counter-df3e561f.js index 5e787bff99..3f8614da99 100644 --- a/web/settings/assets/counter-333c1a6d.js +++ b/web/settings/assets/counter-df3e561f.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-2d7380c9.js b/web/settings/assets/counter-eab5abf7.js similarity index 87% rename from web/settings/assets/counter-2d7380c9.js rename to web/settings/assets/counter-eab5abf7.js index d6ab6f1a10..c658d8811e 100644 --- a/web/settings/assets/counter-2d7380c9.js +++ b/web/settings/assets/counter-eab5abf7.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-1dc0e174.js b/web/settings/assets/counter-f322702a.js similarity index 86% rename from web/settings/assets/counter-1dc0e174.js rename to web/settings/assets/counter-f322702a.js index b462db6f1c..2c725e9a30 100644 --- a/web/settings/assets/counter-1dc0e174.js +++ b/web/settings/assets/counter-f322702a.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-e9ec98c5.js b/web/settings/assets/counter-f56715cd.js similarity index 89% rename from web/settings/assets/counter-e9ec98c5.js rename to web/settings/assets/counter-f56715cd.js index e5272b040f..0789f7aac9 100644 --- a/web/settings/assets/counter-e9ec98c5.js +++ b/web/settings/assets/counter-f56715cd.js @@ -1 +1 @@ -import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-9f3c9c7a.js b/web/settings/assets/counter-fb6b0fb9.js similarity index 86% rename from web/settings/assets/counter-9f3c9c7a.js rename to web/settings/assets/counter-fb6b0fb9.js index cdac0cce1f..51b0eafcd7 100644 --- a/web/settings/assets/counter-9f3c9c7a.js +++ b/web/settings/assets/counter-fb6b0fb9.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; +import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-3aa24e62.js b/web/settings/assets/counter-fbf1efa1.js similarity index 85% rename from web/settings/assets/counter-3aa24e62.js rename to web/settings/assets/counter-fbf1efa1.js index 372ade3a74..437ec022b5 100644 --- a/web/settings/assets/counter-3aa24e62.js +++ b/web/settings/assets/counter-fbf1efa1.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-122dd37a.js b/web/settings/assets/counter-fcc6cfc8.js similarity index 86% rename from web/settings/assets/counter-122dd37a.js rename to web/settings/assets/counter-fcc6cfc8.js index cc1f609896..c8bc40bb41 100644 --- a/web/settings/assets/counter-122dd37a.js +++ b/web/settings/assets/counter-fcc6cfc8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter_s0-764584ba.js b/web/settings/assets/counter_s0-0068172e.js similarity index 86% rename from web/settings/assets/counter_s0-764584ba.js rename to web/settings/assets/counter_s0-0068172e.js index 24b5888094..fef736146a 100644 --- a/web/settings/assets/counter_s0-764584ba.js +++ b/web/settings/assets/counter_s0-0068172e.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; +import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-ea82381f.js b/web/settings/assets/counter_sm-802e0059.js similarity index 96% rename from web/settings/assets/counter_sm-ea82381f.js rename to web/settings/assets/counter_sm-802e0059.js index ca3c9898f2..db07db686c 100644 --- a/web/settings/assets/counter_sm-ea82381f.js +++ b/web/settings/assets/counter_sm-802e0059.js @@ -1 +1 @@ -import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; +import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-cbdcd521.js b/web/settings/assets/device-03a0ce90.js similarity index 92% rename from web/settings/assets/device-cbdcd521.js rename to web/settings/assets/device-03a0ce90.js index 83215f29ed..406a712114 100644 --- a/web/settings/assets/device-cbdcd521.js +++ b/web/settings/assets/device-03a0ce90.js @@ -1 +1 @@ -import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; +import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-007ca4fb.js b/web/settings/assets/device-060ee4fd.js similarity index 85% rename from web/settings/assets/device-007ca4fb.js rename to web/settings/assets/device-060ee4fd.js index 4c5881ca3e..5be779b1dc 100644 --- a/web/settings/assets/device-007ca4fb.js +++ b/web/settings/assets/device-060ee4fd.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-0ac32d64.js b/web/settings/assets/device-0c072e3b.js similarity index 91% rename from web/settings/assets/device-0ac32d64.js rename to web/settings/assets/device-0c072e3b.js index 89f17db744..12ae12e2d9 100644 --- a/web/settings/assets/device-0ac32d64.js +++ b/web/settings/assets/device-0c072e3b.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-658cf7d5.js b/web/settings/assets/device-10d2c4c1.js similarity index 87% rename from web/settings/assets/device-658cf7d5.js rename to web/settings/assets/device-10d2c4c1.js index e1f889ec61..3534d08ee6 100644 --- a/web/settings/assets/device-658cf7d5.js +++ b/web/settings/assets/device-10d2c4c1.js @@ -1 +1 @@ -import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; +import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-8d3984b8.js b/web/settings/assets/device-11808744.js similarity index 89% rename from web/settings/assets/device-8d3984b8.js rename to web/settings/assets/device-11808744.js index 6f68314a6e..886cb9257f 100644 --- a/web/settings/assets/device-8d3984b8.js +++ b/web/settings/assets/device-11808744.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-81fa6cad.js b/web/settings/assets/device-1ebd188c.js similarity index 85% rename from web/settings/assets/device-81fa6cad.js rename to web/settings/assets/device-1ebd188c.js index a9aac097b4..012fe5679e 100644 --- a/web/settings/assets/device-81fa6cad.js +++ b/web/settings/assets/device-1ebd188c.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-5eae489e.js b/web/settings/assets/device-23fbc413.js similarity index 90% rename from web/settings/assets/device-5eae489e.js rename to web/settings/assets/device-23fbc413.js index 8e9be8943a..58c6ee2b36 100644 --- a/web/settings/assets/device-5eae489e.js +++ b/web/settings/assets/device-23fbc413.js @@ -1 +1 @@ -import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-c7f03dad.js b/web/settings/assets/device-24f0a9e0.js similarity index 90% rename from web/settings/assets/device-c7f03dad.js rename to web/settings/assets/device-24f0a9e0.js index 63657e2574..5cf3a33359 100644 --- a/web/settings/assets/device-c7f03dad.js +++ b/web/settings/assets/device-24f0a9e0.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; +import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-796f2679.js b/web/settings/assets/device-2a7fcdcd.js similarity index 88% rename from web/settings/assets/device-796f2679.js rename to web/settings/assets/device-2a7fcdcd.js index c79ed7a5bc..900d341b65 100644 --- a/web/settings/assets/device-796f2679.js +++ b/web/settings/assets/device-2a7fcdcd.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-8eeabc14.js b/web/settings/assets/device-2b476100.js similarity index 87% rename from web/settings/assets/device-8eeabc14.js rename to web/settings/assets/device-2b476100.js index f3e5130c3a..5a9b7ad084 100644 --- a/web/settings/assets/device-8eeabc14.js +++ b/web/settings/assets/device-2b476100.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-ff40d8e1.js b/web/settings/assets/device-2fc1a957.js similarity index 89% rename from web/settings/assets/device-ff40d8e1.js rename to web/settings/assets/device-2fc1a957.js index c5f4cc362d..1597914acf 100644 --- a/web/settings/assets/device-ff40d8e1.js +++ b/web/settings/assets/device-2fc1a957.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-e48058b2.js b/web/settings/assets/device-333a1847.js similarity index 91% rename from web/settings/assets/device-e48058b2.js rename to web/settings/assets/device-333a1847.js index 0eb032d434..b2bf3c4d98 100644 --- a/web/settings/assets/device-e48058b2.js +++ b/web/settings/assets/device-333a1847.js @@ -1 +1 @@ -import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; +import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; diff --git a/web/settings/assets/device-e4295529.js b/web/settings/assets/device-34d66ae0.js similarity index 87% rename from web/settings/assets/device-e4295529.js rename to web/settings/assets/device-34d66ae0.js index e08da8fc42..236939d0ab 100644 --- a/web/settings/assets/device-e4295529.js +++ b/web/settings/assets/device-34d66ae0.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-a55b29f8.js b/web/settings/assets/device-368b885c.js similarity index 96% rename from web/settings/assets/device-a55b29f8.js rename to web/settings/assets/device-368b885c.js index 0dcf7adaac..42dd92744a 100644 --- a/web/settings/assets/device-a55b29f8.js +++ b/web/settings/assets/device-368b885c.js @@ -1 +1 @@ -import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; +import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-2677ebed.js b/web/settings/assets/device-3c66abac.js similarity index 89% rename from web/settings/assets/device-2677ebed.js rename to web/settings/assets/device-3c66abac.js index 37edb97084..34b1dfc41e 100644 --- a/web/settings/assets/device-2677ebed.js +++ b/web/settings/assets/device-3c66abac.js @@ -1 +1 @@ -import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; +import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-d70aa0bc.js b/web/settings/assets/device-44e40f8a.js similarity index 90% rename from web/settings/assets/device-d70aa0bc.js rename to web/settings/assets/device-44e40f8a.js index ccd8609f1f..9a21c57676 100644 --- a/web/settings/assets/device-d70aa0bc.js +++ b/web/settings/assets/device-44e40f8a.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-163e7968.js b/web/settings/assets/device-48b82d13.js similarity index 87% rename from web/settings/assets/device-163e7968.js rename to web/settings/assets/device-48b82d13.js index 82221bf000..9c26f4a08d 100644 --- a/web/settings/assets/device-163e7968.js +++ b/web/settings/assets/device-48b82d13.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-38cd05bd.js b/web/settings/assets/device-5442f3f8.js similarity index 89% rename from web/settings/assets/device-38cd05bd.js rename to web/settings/assets/device-5442f3f8.js index 7b4cfeb778..a267fcb9ca 100644 --- a/web/settings/assets/device-38cd05bd.js +++ b/web/settings/assets/device-5442f3f8.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; +import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-e3c08fb4.js b/web/settings/assets/device-554ac70d.js similarity index 85% rename from web/settings/assets/device-e3c08fb4.js rename to web/settings/assets/device-554ac70d.js index 4808812b01..3842b88b20 100644 --- a/web/settings/assets/device-e3c08fb4.js +++ b/web/settings/assets/device-554ac70d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-8c005647.js b/web/settings/assets/device-5c559131.js similarity index 85% rename from web/settings/assets/device-8c005647.js rename to web/settings/assets/device-5c559131.js index df95ef67a0..a8a5cb28c9 100644 --- a/web/settings/assets/device-8c005647.js +++ b/web/settings/assets/device-5c559131.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-1da87f6d.js b/web/settings/assets/device-5e36d94b.js similarity index 87% rename from web/settings/assets/device-1da87f6d.js rename to web/settings/assets/device-5e36d94b.js index 3a0efa899d..4aa3b382ec 100644 --- a/web/settings/assets/device-1da87f6d.js +++ b/web/settings/assets/device-5e36d94b.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-f7ed291a.js b/web/settings/assets/device-6223df3d.js similarity index 87% rename from web/settings/assets/device-f7ed291a.js rename to web/settings/assets/device-6223df3d.js index c95c6a143d..b26d6989d6 100644 --- a/web/settings/assets/device-f7ed291a.js +++ b/web/settings/assets/device-6223df3d.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-4674babe.js b/web/settings/assets/device-68cea660.js similarity index 85% rename from web/settings/assets/device-4674babe.js rename to web/settings/assets/device-68cea660.js index 7ee64aae16..13549c0b07 100644 --- a/web/settings/assets/device-4674babe.js +++ b/web/settings/assets/device-68cea660.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-26d1cd71.js b/web/settings/assets/device-71f6eb4f.js similarity index 89% rename from web/settings/assets/device-26d1cd71.js rename to web/settings/assets/device-71f6eb4f.js index 38cfd92293..8324d75d3b 100644 --- a/web/settings/assets/device-26d1cd71.js +++ b/web/settings/assets/device-71f6eb4f.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-f0ead4af.js b/web/settings/assets/device-736742cc.js similarity index 87% rename from web/settings/assets/device-f0ead4af.js rename to web/settings/assets/device-736742cc.js index 6dca389e39..659afb50be 100644 --- a/web/settings/assets/device-f0ead4af.js +++ b/web/settings/assets/device-736742cc.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-97a184d3.js b/web/settings/assets/device-76b564cb.js similarity index 95% rename from web/settings/assets/device-97a184d3.js rename to web/settings/assets/device-76b564cb.js index a6973f02ae..5d498f8d95 100644 --- a/web/settings/assets/device-97a184d3.js +++ b/web/settings/assets/device-76b564cb.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-cbc50bc1.js b/web/settings/assets/device-7700d0d1.js similarity index 91% rename from web/settings/assets/device-cbc50bc1.js rename to web/settings/assets/device-7700d0d1.js index 59db30d11e..38e8c2c868 100644 --- a/web/settings/assets/device-cbc50bc1.js +++ b/web/settings/assets/device-7700d0d1.js @@ -1 +1 @@ -import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; +import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-aa08fc7f.js b/web/settings/assets/device-7fbce287.js similarity index 86% rename from web/settings/assets/device-aa08fc7f.js rename to web/settings/assets/device-7fbce287.js index 1e4fcd9319..eaad5563d4 100644 --- a/web/settings/assets/device-aa08fc7f.js +++ b/web/settings/assets/device-7fbce287.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-e85a7920.js b/web/settings/assets/device-84c0ab33.js similarity index 90% rename from web/settings/assets/device-e85a7920.js rename to web/settings/assets/device-84c0ab33.js index e0334709b4..f612ae973a 100644 --- a/web/settings/assets/device-e85a7920.js +++ b/web/settings/assets/device-84c0ab33.js @@ -1 +1 @@ -import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; +import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-9507155a.js b/web/settings/assets/device-9114b4f4.js similarity index 95% rename from web/settings/assets/device-9507155a.js rename to web/settings/assets/device-9114b4f4.js index 904fc8e9db..694217ef9d 100644 --- a/web/settings/assets/device-9507155a.js +++ b/web/settings/assets/device-9114b4f4.js @@ -1 +1 @@ -import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; +import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-b4c7f099.js b/web/settings/assets/device-94f0ef9b.js similarity index 88% rename from web/settings/assets/device-b4c7f099.js rename to web/settings/assets/device-94f0ef9b.js index 521b7bde7b..71ef7b5369 100644 --- a/web/settings/assets/device-b4c7f099.js +++ b/web/settings/assets/device-94f0ef9b.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-711c4142.js b/web/settings/assets/device-9c25dea2.js similarity index 89% rename from web/settings/assets/device-711c4142.js rename to web/settings/assets/device-9c25dea2.js index ad2c19fc40..aa802e44af 100644 --- a/web/settings/assets/device-711c4142.js +++ b/web/settings/assets/device-9c25dea2.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-50e6b066.js b/web/settings/assets/device-9f1d6204.js similarity index 89% rename from web/settings/assets/device-50e6b066.js rename to web/settings/assets/device-9f1d6204.js index 5526c4847d..6ec69ae43d 100644 --- a/web/settings/assets/device-50e6b066.js +++ b/web/settings/assets/device-9f1d6204.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-ae95c2d3.js b/web/settings/assets/device-9f8cfcd3.js similarity index 87% rename from web/settings/assets/device-ae95c2d3.js rename to web/settings/assets/device-9f8cfcd3.js index fbf3710050..796be96bcd 100644 --- a/web/settings/assets/device-ae95c2d3.js +++ b/web/settings/assets/device-9f8cfcd3.js @@ -1 +1 @@ -import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; +import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-ee213d99.js b/web/settings/assets/device-ae65393a.js similarity index 89% rename from web/settings/assets/device-ee213d99.js rename to web/settings/assets/device-ae65393a.js index c428265fc3..67dffb0425 100644 --- a/web/settings/assets/device-ee213d99.js +++ b/web/settings/assets/device-ae65393a.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-2637042f.js b/web/settings/assets/device-ae9d7f6e.js similarity index 92% rename from web/settings/assets/device-2637042f.js rename to web/settings/assets/device-ae9d7f6e.js index 3ab0054166..3b865577fd 100644 --- a/web/settings/assets/device-2637042f.js +++ b/web/settings/assets/device-ae9d7f6e.js @@ -1 +1 @@ -import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; +import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-b9e954eb.js b/web/settings/assets/device-b04bd256.js similarity index 89% rename from web/settings/assets/device-b9e954eb.js rename to web/settings/assets/device-b04bd256.js index 5461381fb5..fee952a876 100644 --- a/web/settings/assets/device-b9e954eb.js +++ b/web/settings/assets/device-b04bd256.js @@ -1 +1 @@ -import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; +import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-99280bbf.js b/web/settings/assets/device-b59b9c77.js similarity index 87% rename from web/settings/assets/device-99280bbf.js rename to web/settings/assets/device-b59b9c77.js index 1f9f222a02..d0f64b8f58 100644 --- a/web/settings/assets/device-99280bbf.js +++ b/web/settings/assets/device-b59b9c77.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-d77016c1.js b/web/settings/assets/device-c0377afe.js similarity index 87% rename from web/settings/assets/device-d77016c1.js rename to web/settings/assets/device-c0377afe.js index d123d14d7d..9f25fa773b 100644 --- a/web/settings/assets/device-d77016c1.js +++ b/web/settings/assets/device-c0377afe.js @@ -1 +1 @@ -import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; +import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-1ae9d038.js b/web/settings/assets/device-c49a0ced.js similarity index 94% rename from web/settings/assets/device-1ae9d038.js rename to web/settings/assets/device-c49a0ced.js index 351d664fb9..feedad292a 100644 --- a/web/settings/assets/device-1ae9d038.js +++ b/web/settings/assets/device-c49a0ced.js @@ -1 +1 @@ -import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; +import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-774e8229.js b/web/settings/assets/device-c553c1ee.js similarity index 87% rename from web/settings/assets/device-774e8229.js rename to web/settings/assets/device-c553c1ee.js index 58a9be519e..6b2900d195 100644 --- a/web/settings/assets/device-774e8229.js +++ b/web/settings/assets/device-c553c1ee.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-7db846be.js b/web/settings/assets/device-c5eaae23.js similarity index 89% rename from web/settings/assets/device-7db846be.js rename to web/settings/assets/device-c5eaae23.js index 7d4f8b59d8..9a9f916647 100644 --- a/web/settings/assets/device-7db846be.js +++ b/web/settings/assets/device-c5eaae23.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-c7f8802d.js b/web/settings/assets/device-c7a69fb7.js similarity index 86% rename from web/settings/assets/device-c7f8802d.js rename to web/settings/assets/device-c7a69fb7.js index d5474e1bb8..5b06f4c7fb 100644 --- a/web/settings/assets/device-c7f8802d.js +++ b/web/settings/assets/device-c7a69fb7.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-217340a2.js b/web/settings/assets/device-cdede991.js similarity index 88% rename from web/settings/assets/device-217340a2.js rename to web/settings/assets/device-cdede991.js index d32877be23..487b23fe1a 100644 --- a/web/settings/assets/device-217340a2.js +++ b/web/settings/assets/device-cdede991.js @@ -1 +1 @@ -import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; +import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-fd68e523.js b/web/settings/assets/device-d5aedcd9.js similarity index 87% rename from web/settings/assets/device-fd68e523.js rename to web/settings/assets/device-d5aedcd9.js index e13c12424a..d9d0dc119f 100644 --- a/web/settings/assets/device-fd68e523.js +++ b/web/settings/assets/device-d5aedcd9.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; +import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-27f1f947.js b/web/settings/assets/device-d971bed6.js similarity index 87% rename from web/settings/assets/device-27f1f947.js rename to web/settings/assets/device-d971bed6.js index d2de4398d0..11c4f382da 100644 --- a/web/settings/assets/device-27f1f947.js +++ b/web/settings/assets/device-d971bed6.js @@ -1 +1 @@ -import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; +import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-b78ab975.js b/web/settings/assets/device-e2dad607.js similarity index 87% rename from web/settings/assets/device-b78ab975.js rename to web/settings/assets/device-e2dad607.js index 695e2c4115..f108b49ff4 100644 --- a/web/settings/assets/device-b78ab975.js +++ b/web/settings/assets/device-e2dad607.js @@ -1 +1 @@ -import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; +import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-ed00b326.js b/web/settings/assets/device-e88cb248.js similarity index 89% rename from web/settings/assets/device-ed00b326.js rename to web/settings/assets/device-e88cb248.js index 030a62e773..da761fb243 100644 --- a/web/settings/assets/device-ed00b326.js +++ b/web/settings/assets/device-e88cb248.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-7eb7f018.js b/web/settings/assets/device-eded82a1.js similarity index 87% rename from web/settings/assets/device-7eb7f018.js rename to web/settings/assets/device-eded82a1.js index 77ed0ab65f..be5b8425c5 100644 --- a/web/settings/assets/device-7eb7f018.js +++ b/web/settings/assets/device-eded82a1.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-bfe71246.js b/web/settings/assets/device-eed5fccd.js similarity index 90% rename from web/settings/assets/device-bfe71246.js rename to web/settings/assets/device-eed5fccd.js index 734c0abb4c..43fe5ca4d2 100644 --- a/web/settings/assets/device-bfe71246.js +++ b/web/settings/assets/device-eed5fccd.js @@ -1 +1 @@ -import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; +import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-91bdc917.js b/web/settings/assets/device-efcbb283.js similarity index 91% rename from web/settings/assets/device-91bdc917.js rename to web/settings/assets/device-efcbb283.js index 89f6bd1619..a35fb715d6 100644 --- a/web/settings/assets/device-91bdc917.js +++ b/web/settings/assets/device-efcbb283.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; +import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-805a57b1.js b/web/settings/assets/device-f186e4bf.js similarity index 89% rename from web/settings/assets/device-805a57b1.js rename to web/settings/assets/device-f186e4bf.js index 1056e1cfab..740c2d0345 100644 --- a/web/settings/assets/device-805a57b1.js +++ b/web/settings/assets/device-f186e4bf.js @@ -1 +1 @@ -import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; +import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-aba64669.js b/web/settings/assets/device-f3520fbc.js similarity index 89% rename from web/settings/assets/device-aba64669.js rename to web/settings/assets/device-f3520fbc.js index 068841cb8d..c115a4d6ac 100644 --- a/web/settings/assets/device-aba64669.js +++ b/web/settings/assets/device-f3520fbc.js @@ -1 +1 @@ -import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; +import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-3d5e6b95.js b/web/settings/assets/device-f581669c.js similarity index 88% rename from web/settings/assets/device-3d5e6b95.js rename to web/settings/assets/device-f581669c.js index c70f9f0b48..91d25845b1 100644 --- a/web/settings/assets/device-3d5e6b95.js +++ b/web/settings/assets/device-f581669c.js @@ -1 +1 @@ -import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; +import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-6b6351d4.js b/web/settings/assets/device-fcd34186.js similarity index 90% rename from web/settings/assets/device-6b6351d4.js rename to web/settings/assets/device-fcd34186.js index 62374aecd3..6cd1ea324c 100644 --- a/web/settings/assets/device-6b6351d4.js +++ b/web/settings/assets/device-fcd34186.js @@ -1 +1 @@ -import{_ as p,p as o,k as r,l as c,A as a,L as _,u as m,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function w(t,e,i,x,y,s){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(l,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"Shelly 1pm"},{value:2,text:"Shelly 1pm plus"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default}; +import{_ as p,p as o,k as r,l as c,A as a,L as _,u as m,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function w(t,e,i,x,y,s){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(l,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"Shelly 1pm"},{value:2,text:"Shelly 1pm plus"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-d3af1afc.js b/web/settings/assets/device-ff4b5125.js similarity index 87% rename from web/settings/assets/device-d3af1afc.js rename to web/settings/assets/device-ff4b5125.js index 18222edc2d..5146d1c67b 100644 --- a/web/settings/assets/device-d3af1afc.js +++ b/web/settings/assets/device-ff4b5125.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; +import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/displayTheme-65aaa96a.js b/web/settings/assets/displayTheme-af0ce411.js similarity index 97% rename from web/settings/assets/displayTheme-65aaa96a.js rename to web/settings/assets/displayTheme-af0ce411.js index f2ec60b6d9..7ba29f6cb3 100644 --- a/web/settings/assets/displayTheme-65aaa96a.js +++ b/web/settings/assets/displayTheme-af0ce411.js @@ -1,4 +1,4 @@ -import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" +import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" [d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; +import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/external_inverter-3a87b7e0.js b/web/settings/assets/external_inverter-c6cc5286.js similarity index 86% rename from web/settings/assets/external_inverter-3a87b7e0.js rename to web/settings/assets/external_inverter-c6cc5286.js index d6607774c8..382210ec23 100644 --- a/web/settings/assets/external_inverter-3a87b7e0.js +++ b/web/settings/assets/external_inverter-c6cc5286.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-fc2cb871.js b/web/settings/assets/external_inverter-debacbf1.js similarity index 86% rename from web/settings/assets/external_inverter-fc2cb871.js rename to web/settings/assets/external_inverter-debacbf1.js index ab7b57490a..672641bb7e 100644 --- a/web/settings/assets/external_inverter-fc2cb871.js +++ b/web/settings/assets/external_inverter-debacbf1.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/index-451d2d20.js b/web/settings/assets/index-fc7a54eb.js similarity index 76% rename from web/settings/assets/index-451d2d20.js rename to web/settings/assets/index-fc7a54eb.js index 2a8ec15480..b265ce3b23 100644 --- a/web/settings/assets/index-451d2d20.js +++ b/web/settings/assets/index-fc7a54eb.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as E,R as A,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-59c39d33.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as q,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import{p as Ee,a as Ae}from"./vendor-axios-1660eacd.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-jquery-7c356c02.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const qe={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(qe,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Et={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},At={class:"form-row mb-1"},qt={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",At,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",qt,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(Et,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,q);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,Es),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",As,[n("div",qs,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(q,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(E("data-v-6927d479"),e=e(),A(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Eo={class:"input-group-prepend"},Ao={class:"input-group-text"},qo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Eo,[n("div",Ao,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",qo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(E("data-v-c51b5764"),e=e(),A(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(E("data-v-e7a6d0c0"),e=e(),A(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},En={class:"container text-center"};function An(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",En,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const qn=b(Mn,[["render",An],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:qn,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-73741289.js"),["assets/Status-73741289.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-c1fa84a0.js"),["assets/ChargeLog-c1fa84a0.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargeLog-298377e5.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-8b04f805.js"),["assets/Chart-8b04f805.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-f8e573cd.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-173a411a.js"),["assets/GeneralConfig-173a411a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-ea25690b.js"),["assets/OptionalComponents-ea25690b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-e7f81317.js"),["assets/GeneralChargeConfig-e7f81317.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-1957a26d.js"),["assets/InstantChargeConfig-1957a26d.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-5bf7058a.js"),["assets/PVChargeConfig-5bf7058a.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-f11d8cfe.js"),["assets/TimeChargeConfig-f11d8cfe.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-e30b140f.js"),["assets/ScheduledChargeConfig-e30b140f.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-ae3c4375.js"),["assets/HardwareInstallation-ae3c4375.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-b175e1b1.js"),["assets/LoadManagementConfig-b175e1b1.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-7d137bb0.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-ac4eb7c0.js"),["assets/ChargePointInstallation-ac4eb7c0.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-2c445ee2.js"),["assets/VehicleConfig-2c445ee2.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-62c3bc70.js"),["assets/CloudConfig-62c3bc70.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-97b2414e.js"),["assets/MqttBridgeConfig-97b2414e.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-cfeb9017.js"),["assets/DebugConfig-cfeb9017.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-86e0f1ee.js"),["assets/Support-86e0f1ee.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-8d508618.js"),["assets/LegalSettings-8d508618.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-13142ce3.js"),["assets/System-13142ce3.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-e6b0bf99.js"),["assets/DataManagement-e6b0bf99.js","assets/vendor-fortawesome-532a6e75.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-de474301.js"),["assets/TestingStore-de474301.js","assets/OpenwbSortableList-7d137bb0.js","assets/vendor-59c39d33.js","assets/vendor-sortablejs-1a35b5ad.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-532a6e75.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-aeba3518.js","assets/vendor-jquery-7c356c02.js","assets/vendor-bootstrap-0cf52758.css","assets/vendor-axios-1660eacd.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ee,Ae);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-94ac8c48.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import{p as Ae,a as qe}from"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-jquery-f7104ff8.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-7ee068bd.js"),["assets/Status-7ee068bd.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-f2b39be5.js"),["assets/ChargeLog-f2b39be5.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b8ee6f3b.js"),["assets/Chart-b8ee6f3b.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-dd3fd71e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-f25442cf.js"),["assets/GeneralConfig-f25442cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-69f6a3bd.js"),["assets/OptionalComponents-69f6a3bd.js","assets/dynamic-import-helper-be004503.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ec57fcff.js"),["assets/GeneralChargeConfig-ec57fcff.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-676664f2.js"),["assets/InstantChargeConfig-676664f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-8ca745ae.js"),["assets/PVChargeConfig-8ca745ae.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-ef284125.js"),["assets/TimeChargeConfig-ef284125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-7c8c846d.js"),["assets/ScheduledChargeConfig-7c8c846d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-0ea898ce.js"),["assets/HardwareInstallation-0ea898ce.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-9bdba699.js"),["assets/LoadManagementConfig-9bdba699.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-8561f9a9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-470f2248.js"),["assets/ChargePointInstallation-470f2248.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-322b25b7.js"),["assets/VehicleConfig-322b25b7.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-baf072fa.js"),["assets/CloudConfig-baf072fa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-2808894f.js"),["assets/MqttBridgeConfig-2808894f.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-5c4c9ffc.js"),["assets/DebugConfig-5c4c9ffc.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-8e52ed51.js"),["assets/Support-8e52ed51.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-3159f92a.js"),["assets/LegalSettings-3159f92a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-765e2323.js"),["assets/System-765e2323.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-22142622.js"),["assets/DataManagement-22142622.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-ba263cde.js"),["assets/TestingStore-ba263cde.js","assets/OpenwbSortableList-8561f9a9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-71041bec.js b/web/settings/assets/inverter-09d68c12.js similarity index 89% rename from web/settings/assets/inverter-71041bec.js rename to web/settings/assets/inverter-09d68c12.js index 0affdb264f..1aad5941ed 100644 --- a/web/settings/assets/inverter-71041bec.js +++ b/web/settings/assets/inverter-09d68c12.js @@ -1 +1 @@ -import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-67becac8.js b/web/settings/assets/inverter-0a8a02aa.js similarity index 86% rename from web/settings/assets/inverter-67becac8.js rename to web/settings/assets/inverter-0a8a02aa.js index f31a14d1b4..0c80c472c8 100644 --- a/web/settings/assets/inverter-67becac8.js +++ b/web/settings/assets/inverter-0a8a02aa.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; +import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-5a43761c.js b/web/settings/assets/inverter-0daad30f.js similarity index 90% rename from web/settings/assets/inverter-5a43761c.js rename to web/settings/assets/inverter-0daad30f.js index 4dc10a4891..df86c9e769 100644 --- a/web/settings/assets/inverter-5a43761c.js +++ b/web/settings/assets/inverter-0daad30f.js @@ -1 +1 @@ -import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default}; +import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-a15db0a0.js b/web/settings/assets/inverter-1a27b5a2.js similarity index 86% rename from web/settings/assets/inverter-a15db0a0.js rename to web/settings/assets/inverter-1a27b5a2.js index 14483399cb..7951b213ba 100644 --- a/web/settings/assets/inverter-a15db0a0.js +++ b/web/settings/assets/inverter-1a27b5a2.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-e06fd605.js b/web/settings/assets/inverter-22be4ed9.js similarity index 93% rename from web/settings/assets/inverter-e06fd605.js rename to web/settings/assets/inverter-22be4ed9.js index b438a6492e..b1004887c8 100644 --- a/web/settings/assets/inverter-e06fd605.js +++ b/web/settings/assets/inverter-22be4ed9.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a3407794.js b/web/settings/assets/inverter-2b727919.js similarity index 93% rename from web/settings/assets/inverter-a3407794.js rename to web/settings/assets/inverter-2b727919.js index 3f550fa359..432a6aad38 100644 --- a/web/settings/assets/inverter-a3407794.js +++ b/web/settings/assets/inverter-2b727919.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-0769e573.js b/web/settings/assets/inverter-3515d2b5.js similarity index 93% rename from web/settings/assets/inverter-0769e573.js rename to web/settings/assets/inverter-3515d2b5.js index c566d5a3f3..9eb3674999 100644 --- a/web/settings/assets/inverter-0769e573.js +++ b/web/settings/assets/inverter-3515d2b5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-695b5c53.js b/web/settings/assets/inverter-35d50734.js similarity index 86% rename from web/settings/assets/inverter-695b5c53.js rename to web/settings/assets/inverter-35d50734.js index b27b779c18..9de9f05f9b 100644 --- a/web/settings/assets/inverter-695b5c53.js +++ b/web/settings/assets/inverter-35d50734.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-ac056d1d.js b/web/settings/assets/inverter-39afe3b5.js similarity index 86% rename from web/settings/assets/inverter-ac056d1d.js rename to web/settings/assets/inverter-39afe3b5.js index c5c31e2201..2d010ef11f 100644 --- a/web/settings/assets/inverter-ac056d1d.js +++ b/web/settings/assets/inverter-39afe3b5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e440b330.js b/web/settings/assets/inverter-3b84e31d.js similarity index 86% rename from web/settings/assets/inverter-e440b330.js rename to web/settings/assets/inverter-3b84e31d.js index 95ae64efc8..b0599a5871 100644 --- a/web/settings/assets/inverter-e440b330.js +++ b/web/settings/assets/inverter-3b84e31d.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-bc58fc73.js b/web/settings/assets/inverter-3df75149.js similarity index 91% rename from web/settings/assets/inverter-bc58fc73.js rename to web/settings/assets/inverter-3df75149.js index 7071a6d434..50a6b4a958 100644 --- a/web/settings/assets/inverter-bc58fc73.js +++ b/web/settings/assets/inverter-3df75149.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; diff --git a/web/settings/assets/inverter-23c62af1.js b/web/settings/assets/inverter-3e855a0b.js similarity index 86% rename from web/settings/assets/inverter-23c62af1.js rename to web/settings/assets/inverter-3e855a0b.js index 23da21c34d..d9d6636f5d 100644 --- a/web/settings/assets/inverter-23c62af1.js +++ b/web/settings/assets/inverter-3e855a0b.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-7c9d893d.js b/web/settings/assets/inverter-42feff92.js similarity index 86% rename from web/settings/assets/inverter-7c9d893d.js rename to web/settings/assets/inverter-42feff92.js index 0711668c70..85e55b1389 100644 --- a/web/settings/assets/inverter-7c9d893d.js +++ b/web/settings/assets/inverter-42feff92.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-1bbefb9c.js b/web/settings/assets/inverter-4ed4378e.js similarity index 91% rename from web/settings/assets/inverter-1bbefb9c.js rename to web/settings/assets/inverter-4ed4378e.js index 4731285318..133551988a 100644 --- a/web/settings/assets/inverter-1bbefb9c.js +++ b/web/settings/assets/inverter-4ed4378e.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-33d71d7c.js b/web/settings/assets/inverter-5500500b.js similarity index 87% rename from web/settings/assets/inverter-33d71d7c.js rename to web/settings/assets/inverter-5500500b.js index 7ecd763815..46f2917125 100644 --- a/web/settings/assets/inverter-33d71d7c.js +++ b/web/settings/assets/inverter-5500500b.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-00a09c36.js b/web/settings/assets/inverter-57f7e67c.js similarity index 86% rename from web/settings/assets/inverter-00a09c36.js rename to web/settings/assets/inverter-57f7e67c.js index e05937a5d2..9c3a0f3888 100644 --- a/web/settings/assets/inverter-00a09c36.js +++ b/web/settings/assets/inverter-57f7e67c.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-ef72abc7.js b/web/settings/assets/inverter-66b1df21.js similarity index 89% rename from web/settings/assets/inverter-ef72abc7.js rename to web/settings/assets/inverter-66b1df21.js index 77236ceee3..40e718c06a 100644 --- a/web/settings/assets/inverter-ef72abc7.js +++ b/web/settings/assets/inverter-66b1df21.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-6bf21593.js b/web/settings/assets/inverter-6afece8c.js similarity index 90% rename from web/settings/assets/inverter-6bf21593.js rename to web/settings/assets/inverter-6afece8c.js index 8c42d41b58..70be004d48 100644 --- a/web/settings/assets/inverter-6bf21593.js +++ b/web/settings/assets/inverter-6afece8c.js @@ -1 +1 @@ -import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; +import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-26fc0c4d.js b/web/settings/assets/inverter-735276eb.js similarity index 94% rename from web/settings/assets/inverter-26fc0c4d.js rename to web/settings/assets/inverter-735276eb.js index 9e11086067..dc7953b221 100644 --- a/web/settings/assets/inverter-26fc0c4d.js +++ b/web/settings/assets/inverter-735276eb.js @@ -1 +1 @@ -import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; +import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; diff --git a/web/settings/assets/inverter-1bcb55bc.js b/web/settings/assets/inverter-89a115de.js similarity index 86% rename from web/settings/assets/inverter-1bcb55bc.js rename to web/settings/assets/inverter-89a115de.js index 7e14b7af69..9d109c2ac2 100644 --- a/web/settings/assets/inverter-1bcb55bc.js +++ b/web/settings/assets/inverter-89a115de.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-44c42273.js b/web/settings/assets/inverter-8ebf65c2.js similarity index 96% rename from web/settings/assets/inverter-44c42273.js rename to web/settings/assets/inverter-8ebf65c2.js index ce390ecf96..6cbe4c2afb 100644 --- a/web/settings/assets/inverter-44c42273.js +++ b/web/settings/assets/inverter-8ebf65c2.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-47ad48de.js b/web/settings/assets/inverter-91521524.js similarity index 90% rename from web/settings/assets/inverter-47ad48de.js rename to web/settings/assets/inverter-91521524.js index 01561d6818..7c5e5e9089 100644 --- a/web/settings/assets/inverter-47ad48de.js +++ b/web/settings/assets/inverter-91521524.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-b84b910e.js b/web/settings/assets/inverter-973593c5.js similarity index 86% rename from web/settings/assets/inverter-b84b910e.js rename to web/settings/assets/inverter-973593c5.js index c525e55747..48438568c2 100644 --- a/web/settings/assets/inverter-b84b910e.js +++ b/web/settings/assets/inverter-973593c5.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-a6ddec85.js b/web/settings/assets/inverter-983f9bf4.js similarity index 93% rename from web/settings/assets/inverter-a6ddec85.js rename to web/settings/assets/inverter-983f9bf4.js index f158c171cb..09d5a29ac5 100644 --- a/web/settings/assets/inverter-a6ddec85.js +++ b/web/settings/assets/inverter-983f9bf4.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-106f6b2a.js b/web/settings/assets/inverter-98ed6e35.js similarity index 88% rename from web/settings/assets/inverter-106f6b2a.js rename to web/settings/assets/inverter-98ed6e35.js index 1617183fe2..cbf05f9439 100644 --- a/web/settings/assets/inverter-106f6b2a.js +++ b/web/settings/assets/inverter-98ed6e35.js @@ -1 +1 @@ -import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-b8fdf4a4.js b/web/settings/assets/inverter-a4f4de69.js similarity index 86% rename from web/settings/assets/inverter-b8fdf4a4.js rename to web/settings/assets/inverter-a4f4de69.js index 4587cdda05..a44fea1536 100644 --- a/web/settings/assets/inverter-b8fdf4a4.js +++ b/web/settings/assets/inverter-a4f4de69.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-78f559db.js b/web/settings/assets/inverter-ae905211.js similarity index 86% rename from web/settings/assets/inverter-78f559db.js rename to web/settings/assets/inverter-ae905211.js index f386c68fa0..fde29c139d 100644 --- a/web/settings/assets/inverter-78f559db.js +++ b/web/settings/assets/inverter-ae905211.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-239362ff.js b/web/settings/assets/inverter-b33414cf.js similarity index 89% rename from web/settings/assets/inverter-239362ff.js rename to web/settings/assets/inverter-b33414cf.js index c0f3b25a9b..941e5fd81c 100644 --- a/web/settings/assets/inverter-239362ff.js +++ b/web/settings/assets/inverter-b33414cf.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; +import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-3639b6ee.js b/web/settings/assets/inverter-b35ac71f.js similarity index 88% rename from web/settings/assets/inverter-3639b6ee.js rename to web/settings/assets/inverter-b35ac71f.js index 05ee6f6f82..b146057765 100644 --- a/web/settings/assets/inverter-3639b6ee.js +++ b/web/settings/assets/inverter-b35ac71f.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-832936bd.js b/web/settings/assets/inverter-b47e8b65.js similarity index 86% rename from web/settings/assets/inverter-832936bd.js rename to web/settings/assets/inverter-b47e8b65.js index 5926302de8..44bdefb92b 100644 --- a/web/settings/assets/inverter-832936bd.js +++ b/web/settings/assets/inverter-b47e8b65.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; +import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-3067b8de.js b/web/settings/assets/inverter-b6d89f35.js similarity index 86% rename from web/settings/assets/inverter-3067b8de.js rename to web/settings/assets/inverter-b6d89f35.js index a1fc25e8a8..f41f140db7 100644 --- a/web/settings/assets/inverter-3067b8de.js +++ b/web/settings/assets/inverter-b6d89f35.js @@ -1 +1 @@ -import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; +import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-36547adc.js b/web/settings/assets/inverter-ba59974f.js similarity index 95% rename from web/settings/assets/inverter-36547adc.js rename to web/settings/assets/inverter-ba59974f.js index 060f8137ae..a183a7ca61 100644 --- a/web/settings/assets/inverter-36547adc.js +++ b/web/settings/assets/inverter-ba59974f.js @@ -1 +1 @@ -import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; +import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-89f2126b.js b/web/settings/assets/inverter-bc54ef72.js similarity index 86% rename from web/settings/assets/inverter-89f2126b.js rename to web/settings/assets/inverter-bc54ef72.js index f31e7ddf8a..899d1873c2 100644 --- a/web/settings/assets/inverter-89f2126b.js +++ b/web/settings/assets/inverter-bc54ef72.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-d426b124.js b/web/settings/assets/inverter-bce80bd5.js similarity index 86% rename from web/settings/assets/inverter-d426b124.js rename to web/settings/assets/inverter-bce80bd5.js index a29ebc9021..8a64d22552 100644 --- a/web/settings/assets/inverter-d426b124.js +++ b/web/settings/assets/inverter-bce80bd5.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-5c832d19.js b/web/settings/assets/inverter-be294b52.js similarity index 86% rename from web/settings/assets/inverter-5c832d19.js rename to web/settings/assets/inverter-be294b52.js index 9f060f7911..6eef22d36d 100644 --- a/web/settings/assets/inverter-5c832d19.js +++ b/web/settings/assets/inverter-be294b52.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-428bf3c7.js b/web/settings/assets/inverter-c0320c10.js similarity index 88% rename from web/settings/assets/inverter-428bf3c7.js rename to web/settings/assets/inverter-c0320c10.js index 689e641320..d9943510b8 100644 --- a/web/settings/assets/inverter-428bf3c7.js +++ b/web/settings/assets/inverter-c0320c10.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default}; +import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-6f9c66d1.js b/web/settings/assets/inverter-d5ca1a80.js similarity index 90% rename from web/settings/assets/inverter-6f9c66d1.js rename to web/settings/assets/inverter-d5ca1a80.js index 46524a5800..a160bd4235 100644 --- a/web/settings/assets/inverter-6f9c66d1.js +++ b/web/settings/assets/inverter-d5ca1a80.js @@ -1 +1 @@ -import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-d4107377.js b/web/settings/assets/inverter-d63a850e.js similarity index 86% rename from web/settings/assets/inverter-d4107377.js rename to web/settings/assets/inverter-d63a850e.js index b90ea78ff9..581d38bcca 100644 --- a/web/settings/assets/inverter-d4107377.js +++ b/web/settings/assets/inverter-d63a850e.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-3849924d.js b/web/settings/assets/inverter-d7dcc616.js similarity index 94% rename from web/settings/assets/inverter-3849924d.js rename to web/settings/assets/inverter-d7dcc616.js index 791a9d7229..2242b9955d 100644 --- a/web/settings/assets/inverter-3849924d.js +++ b/web/settings/assets/inverter-d7dcc616.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; +import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-c3c11140.js b/web/settings/assets/inverter-da627431.js similarity index 93% rename from web/settings/assets/inverter-c3c11140.js rename to web/settings/assets/inverter-da627431.js index 398238d4d9..6cf8869c19 100644 --- a/web/settings/assets/inverter-c3c11140.js +++ b/web/settings/assets/inverter-da627431.js @@ -1 +1 @@ -import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; +import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; diff --git a/web/settings/assets/inverter-eee1527f.js b/web/settings/assets/inverter-e383405a.js similarity index 93% rename from web/settings/assets/inverter-eee1527f.js rename to web/settings/assets/inverter-e383405a.js index 723c93d562..b3d7d1d7ee 100644 --- a/web/settings/assets/inverter-eee1527f.js +++ b/web/settings/assets/inverter-e383405a.js @@ -1 +1 @@ -import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; +import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-fabd24ac.js b/web/settings/assets/inverter-f0ad6bcd.js similarity index 86% rename from web/settings/assets/inverter-fabd24ac.js rename to web/settings/assets/inverter-f0ad6bcd.js index fdb5cb6c83..00141006d6 100644 --- a/web/settings/assets/inverter-fabd24ac.js +++ b/web/settings/assets/inverter-f0ad6bcd.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; +import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-dfa572d8.js b/web/settings/assets/inverter-f266f49d.js similarity index 86% rename from web/settings/assets/inverter-dfa572d8.js rename to web/settings/assets/inverter-f266f49d.js index 3db6b50d8a..32a1e4c073 100644 --- a/web/settings/assets/inverter-dfa572d8.js +++ b/web/settings/assets/inverter-f266f49d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-04c6e1e4.js b/web/settings/assets/inverter-f900cffa.js similarity index 86% rename from web/settings/assets/inverter-04c6e1e4.js rename to web/settings/assets/inverter-f900cffa.js index c6048c829d..d39def9f2d 100644 --- a/web/settings/assets/inverter-04c6e1e4.js +++ b/web/settings/assets/inverter-f900cffa.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-151fa9c5.js b/web/settings/assets/inverter-fb25d42c.js similarity index 86% rename from web/settings/assets/inverter-151fa9c5.js rename to web/settings/assets/inverter-fb25d42c.js index 84dce4f5a7..945ff453a9 100644 --- a/web/settings/assets/inverter-151fa9c5.js +++ b/web/settings/assets/inverter-fb25d42c.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/vehicle-d1763e7a.js b/web/settings/assets/vehicle-0247f03c.js similarity index 93% rename from web/settings/assets/vehicle-d1763e7a.js rename to web/settings/assets/vehicle-0247f03c.js index 78b28885c3..ef0d198b23 100644 --- a/web/settings/assets/vehicle-d1763e7a.js +++ b/web/settings/assets/vehicle-0247f03c.js @@ -1 +1 @@ -import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-75667aad.js b/web/settings/assets/vehicle-0969da15.js similarity index 91% rename from web/settings/assets/vehicle-75667aad.js rename to web/settings/assets/vehicle-0969da15.js index ebf206244a..194ca25dbd 100644 --- a/web/settings/assets/vehicle-75667aad.js +++ b/web/settings/assets/vehicle-0969da15.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-391df8d0.js b/web/settings/assets/vehicle-174df8ec.js similarity index 93% rename from web/settings/assets/vehicle-391df8d0.js rename to web/settings/assets/vehicle-174df8ec.js index f98d236dd5..a2ec255f57 100644 --- a/web/settings/assets/vehicle-391df8d0.js +++ b/web/settings/assets/vehicle-174df8ec.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-7df8b393.js b/web/settings/assets/vehicle-189fc2cb.js similarity index 94% rename from web/settings/assets/vehicle-7df8b393.js rename to web/settings/assets/vehicle-189fc2cb.js index 845b81bbfa..4104b9c93e 100644 --- a/web/settings/assets/vehicle-7df8b393.js +++ b/web/settings/assets/vehicle-189fc2cb.js @@ -1 +1 @@ -import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; +import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-0b6d061a.js b/web/settings/assets/vehicle-2c5d967c.js similarity index 90% rename from web/settings/assets/vehicle-0b6d061a.js rename to web/settings/assets/vehicle-2c5d967c.js index 6ff1830e18..24addf0f73 100644 --- a/web/settings/assets/vehicle-0b6d061a.js +++ b/web/settings/assets/vehicle-2c5d967c.js @@ -1 +1 @@ -import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; +import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-df2230d5.js b/web/settings/assets/vehicle-316d265a.js similarity index 92% rename from web/settings/assets/vehicle-df2230d5.js rename to web/settings/assets/vehicle-316d265a.js index 6f35bd66e7..224ae41541 100644 --- a/web/settings/assets/vehicle-df2230d5.js +++ b/web/settings/assets/vehicle-316d265a.js @@ -1 +1 @@ -import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; +import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; diff --git a/web/settings/assets/vehicle-d98ffef7.js b/web/settings/assets/vehicle-6f02cb37.js similarity index 92% rename from web/settings/assets/vehicle-d98ffef7.js rename to web/settings/assets/vehicle-6f02cb37.js index 1c45284b40..cfe713b672 100644 --- a/web/settings/assets/vehicle-d98ffef7.js +++ b/web/settings/assets/vehicle-6f02cb37.js @@ -1 +1 @@ -import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; +import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-67509117.js b/web/settings/assets/vehicle-84dd6d0d.js similarity index 95% rename from web/settings/assets/vehicle-67509117.js rename to web/settings/assets/vehicle-84dd6d0d.js index 97b35b86e0..43b35b64c7 100644 --- a/web/settings/assets/vehicle-67509117.js +++ b/web/settings/assets/vehicle-84dd6d0d.js @@ -1 +1 @@ -import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; +import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; diff --git a/web/settings/assets/vehicle-4249fcff.js b/web/settings/assets/vehicle-8bdcc244.js similarity index 95% rename from web/settings/assets/vehicle-4249fcff.js rename to web/settings/assets/vehicle-8bdcc244.js index 803c7cb43e..405327e7fb 100644 --- a/web/settings/assets/vehicle-4249fcff.js +++ b/web/settings/assets/vehicle-8bdcc244.js @@ -1 +1 @@ -import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; +import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-39e57c4c.js b/web/settings/assets/vehicle-a2646a86.js similarity index 94% rename from web/settings/assets/vehicle-39e57c4c.js rename to web/settings/assets/vehicle-a2646a86.js index e11379a89c..3c83c1f4c8 100644 --- a/web/settings/assets/vehicle-39e57c4c.js +++ b/web/settings/assets/vehicle-a2646a86.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-59c39d33.js";import{a as y}from"./vendor-axios-1660eacd.js";import{C}from"./index-451d2d20.js";import"./vendor-sortablejs-1a35b5ad.js";import"./vendor-fortawesome-532a6e75.js";import"./vendor-bootstrap-aeba3518.js";import"./vendor-jquery-7c356c02.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-94ac8c48.js";import{a as y}from"./vendor-axios-dc63434e.js";import{C}from"./index-fc7a54eb.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-56b3de10.js b/web/settings/assets/vehicle-b76d2976.js similarity index 91% rename from web/settings/assets/vehicle-56b3de10.js rename to web/settings/assets/vehicle-b76d2976.js index 9ddb4d1029..90cf6cfa74 100644 --- a/web/settings/assets/vehicle-56b3de10.js +++ b/web/settings/assets/vehicle-b76d2976.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; +import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-a27fc177.js b/web/settings/assets/vehicle-c865f314.js similarity index 91% rename from web/settings/assets/vehicle-a27fc177.js rename to web/settings/assets/vehicle-c865f314.js index 38516552ed..f02776c353 100644 --- a/web/settings/assets/vehicle-a27fc177.js +++ b/web/settings/assets/vehicle-c865f314.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-b9c60ee5.js b/web/settings/assets/vehicle-f74618cf.js similarity index 91% rename from web/settings/assets/vehicle-b9c60ee5.js rename to web/settings/assets/vehicle-f74618cf.js index 571f5dfcf4..2a9f92b0dd 100644 --- a/web/settings/assets/vehicle-b9c60ee5.js +++ b/web/settings/assets/vehicle-f74618cf.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-59c39d33.js";import"./vendor-sortablejs-1a35b5ad.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vendor-59c39d33.js b/web/settings/assets/vendor-94ac8c48.js similarity index 56% rename from web/settings/assets/vendor-59c39d33.js rename to web/settings/assets/vendor-94ac8c48.js index d563139a61..6db9d37dbe 100644 --- a/web/settings/assets/vendor-59c39d33.js +++ b/web/settings/assets/vendor-94ac8c48.js @@ -1,22 +1,22 @@ -import{r as I4}from"./vendor-sortablejs-1a35b5ad.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},sh={};sh.byteLength=B4;sh.toByteArray=N4;sh.fromByteArray=D4;var Xi=[],ui=[],P4=typeof Uint8Array<"u"?Uint8Array:Array,Ic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,C4=Ic.length;Ca0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function B4(e){var t=Uw(e),r=t[0],i=t[1];return(r+i)*3/4-i}function L4(e,t,r){return(t+r)*3/4-r}function N4(e){var t,r=Uw(e),i=r[0],a=r[1],n=new P4(L4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function k4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function $4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! +import{r as k4}from"./vendor-sortablejs-dbc23470.js";var Ye=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){if(this instanceof i){var a=[null];a.push.apply(a,arguments);var n=Function.bind.apply(t,a);return new n}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},oh={};oh.byteLength=F4;oh.toByteArray=U4;oh.fromByteArray=W4;var Xi=[],ui=[],$4=typeof Uint8Array<"u"?Uint8Array:Array,Oc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,D4=Oc.length;Ca0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function F4(e){var t=Dw(e),r=t[0],i=t[1];return(r+i)*3/4-i}function j4(e,t,r){return(t+r)*3/4-r}function U4(e){var t,r=Dw(e),i=r[0],a=r[1],n=new $4(j4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function H4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function q4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT - */(function(e){var t=sh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Hw={exports:{}},rr=Hw.exports={},Gi,Yi;function P0(){throw new Error("setTimeout has not been defined")}function C0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=P0}catch{Gi=P0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=C0}catch{Yi=C0}})();function qw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===P0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function F4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===C0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,zo,il=-1;function j4(){!za||!zo||(za=!1,zo.length?In=zo.concat(In):il=-1,In.length&&Ww())}function Ww(){if(!za){var e=qw(j4);za=!0;for(var t=In.length;t;){for(zo=In,In=[];++il1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},Vw=()=>!1,q4=/^on[^a-z]/,Ps=e=>q4.test(e),xl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W4=Object.prototype.hasOwnProperty,wt=(e,t)=>W4.call(e,t),ze=Array.isArray,Jo=e=>Cs(e)==="[object Map]",va=e=>Cs(e)==="[object Set]",fm=e=>Cs(e)==="[object Date]",K4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",fh=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),zw=Object.prototype.toString,Cs=e=>zw.call(e),nv=e=>Cs(e).slice(8,-1),Gw=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),V4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),uh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},z4=/-(\w)/g,Kr=uh(e=>e.replace(z4,(t,r)=>r?r.toUpperCase():"")),G4=/\B([A-Z])/g,Hr=uh(e=>e.replace(G4,"-$1").toLowerCase()),_o=uh(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=uh(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Rl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Al=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let um;const Tl=()=>um||(um=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),Y4="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",Z4=Kn(Y4);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(J4);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===zw||!Qe(e.toString))?JSON.stringify(e,Zw,2):String(e),Zw=(e,t)=>t&&t.__v_isRef?Zw(e,t.value):Jo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:va(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Gw(t)?String(t):t;function Ol(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Ol("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},e2=e=>(e.w&So)>0,t2=e=>(e.n&So)>0,lE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"delete":ze(e)||(c.push(u.get(Qo)),Jo(e)&&c.push(u.get(L0)));break;case"set":Jo(e)&&c.push(u.get(Qo));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&N0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);N0(sv(m),d)}}function N0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&hm(i,t);for(const i of r)i.computed||hm(i,t)}function hm(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function pE(e,t){var r;return(r=Il.get(e))==null?void 0:r.get(t)}const vE=Kn("__proto__,__v_isRef,__isVue"),n2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),gE=hh(),mE=hh(!1,!0),yE=hh(!0),bE=hh(!0,!0),cm=wE();function wE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ga();const i=lt(this)[t].apply(this,r);return ma(),i}}),e}function _E(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function hh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?c2:h2:t?l2:u2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(cm,a))return Reflect.get(cm,a,n);if(a==="hasOwnProperty")return _E}const c=Reflect.get(i,a,n);return(Uf(a)?n2.has(a):vE(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?lv(c):ya(c):c}}const ME=o2(),SE=o2(!0);function o2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,ch=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=ch(a),c=i?fv:r?cv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",Qo),Reflect.get(e,"size",e)}function dm(e){e=lt(e);const t=lt(this);return ch(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function pm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=ch(r);let n=i.call(r,e);n?f2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function vm(e){const t=lt(this),{has:r,get:i}=ch(t);let a=r.call(t,e);a?f2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function gm(){const e=lt(this),t=e.size!==0,r=Jo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?cv:Wf;return!e&&Tr(c,"iterate",Qo),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Jo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?cv:Wf;return!t&&Tr(n,"iterate",d?L0:Qo),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function OE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:dm,set:pm,delete:vm,clear:gm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[IE,PE,CE,BE]=OE();function dh(e,t){const r=t?e?BE:CE:e?PE:IE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const LE={get:dh(!1,!1)},NE={get:dh(!1,!0)},kE={get:dh(!0,!1)},$E={get:dh(!0,!0)};function f2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 u2=new WeakMap,l2=new WeakMap,h2=new WeakMap,c2=new WeakMap;function DE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function FE(e){return e.__v_skip||!Object.isExtensible(e)?0:DE(nv(e))}function ya(e){return Ln(e)?e:ph(e,!1,a2,LE,u2)}function uv(e){return ph(e,!1,AE,NE,l2)}function lv(e){return ph(e,!0,s2,kE,h2)}function Wa(e){return ph(e,!0,TE,$E,c2)}function ph(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=FE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function hv(e){return El(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?ya(e):e,cv=e=>Rt(e)?lv(e):e;function dv(e){co&&Br&&(e=lt(e),i2(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function vh(e,t){e=lt(e);const r=e.dep;r&&N0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return p2(e,!1)}function d2(e){return p2(e,!0)}function p2(e,t){return Xt(e)?e:new jE(e,t)}class jE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return dv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),vh(this,t))}}function UE(e){vh(e,e.value)}function vo(e){return Xt(e)?e.value:e}function HE(e){return Qe(e)?e():vo(e)}const qE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function pv(e){return po(e)?e:new Proxy(e,qE)}class WE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>dv(this),()=>vh(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function KE(e){return new WE(e)}function VE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=v2(e,r);return t}class zE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pE(lt(this._object),this._key)}}class GE{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function YE(e,t,r){return Xt(e)?e:Qe(e)?new GE(e):Rt(e)&&arguments.length>1?v2(e,t,r):mr(e)}function v2(e,t,r){const i=e[t];return Xt(i)?i:new zE(e,t,r)}class ZE{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,vh(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return dv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function XE(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new ZE(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ea=[];function Tf(e){ea.push(e)}function Of(){ea.pop()}function Ue(e,...t){ga();const r=ea.length?ea[ea.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=JE();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Rh(r,n.type)}>`).join(` + */(function(e){var t=oh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Fw={exports:{}},ir=Fw.exports={},Gi,Yi;function C0(){throw new Error("setTimeout has not been defined")}function B0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=C0}catch{Gi=C0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=B0}catch{Yi=B0}})();function jw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===C0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function K4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===B0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,Go,il=-1;function V4(){!za||!Go||(za=!1,Go.length?In=Go.concat(In):il=-1,In.length&&Uw())}function Uw(){if(!za){var e=jw(V4);za=!0;for(var t=In.length;t;){for(Go=In,In=[];++il1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},qw=()=>!1,Y4=/^on[^a-z]/,Ps=e=>Y4.test(e),xl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},Z4=Object.prototype.hasOwnProperty,wt=(e,t)=>Z4.call(e,t),ze=Array.isArray,Qo=e=>Cs(e)==="[object Map]",ga=e=>Cs(e)==="[object Set]",am=e=>Cs(e)==="[object Date]",X4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",ah=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),Ww=Object.prototype.toString,Cs=e=>Ww.call(e),nv=e=>Cs(e).slice(8,-1),Kw=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),J4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),sh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},Q4=/-(\w)/g,Kr=sh(e=>e.replace(Q4,(t,r)=>r?r.toUpperCase():"")),eE=/\B([A-Z])/g,Hr=sh(e=>e.replace(eE,"-$1").toLowerCase()),_o=sh(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=sh(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Rl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Al=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let sm;const Tl=()=>sm||(sm=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),tE="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",rE=Kn(tE);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(nE);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===Ww||!Qe(e.toString))?JSON.stringify(e,zw,2):String(e),zw=(e,t)=>t&&t.__v_isRef?zw(e,t.value):Qo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:ga(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Kw(t)?String(t):t;function Ol(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Ol("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},Xw=e=>(e.w&So)>0,Jw=e=>(e.n&So)>0,gE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(ea)),Qo(e)&&c.push(u.get(N0)));break;case"delete":ze(e)||(c.push(u.get(ea)),Qo(e)&&c.push(u.get(N0)));break;case"set":Qo(e)&&c.push(u.get(ea));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&k0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);k0(sv(m),d)}}function k0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&um(i,t);for(const i of r)i.computed||um(i,t)}function um(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function wE(e,t){var r;return(r=Il.get(e))==null?void 0:r.get(t)}const _E=Kn("__proto__,__v_isRef,__isVue"),t2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),ME=uh(),SE=uh(!1,!0),xE=uh(!0),EE=uh(!0,!0),lm=RE();function RE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ma();const i=lt(this)[t].apply(this,r);return ya(),i}}),e}function AE(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function uh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?u2:f2:t?s2:a2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(lm,a))return Reflect.get(lm,a,n);if(a==="hasOwnProperty")return AE}const c=Reflect.get(i,a,n);return(Uf(a)?t2.has(a):_E(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?uv(c):No(c):c}}const TE=r2(),OE=r2(!0);function r2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,lh=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=lh(a),c=i?fv:r?hv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",ea),Reflect.get(e,"size",e)}function hm(e){e=lt(e);const t=lt(this);return lh(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function cm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=lh(r);let n=i.call(r,e);n?o2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function dm(e){const t=lt(this),{has:r,get:i}=lh(t);let a=r.call(t,e);a?o2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function pm(){const e=lt(this),t=e.size!==0,r=Qo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?hv:Wf;return!e&&Tr(c,"iterate",ea),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Qo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?hv:Wf;return!t&&Tr(n,"iterate",d?N0:ea),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function NE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:hm,set:cm,delete:dm,clear:pm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:hm,set:cm,delete:dm,clear:pm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[kE,$E,DE,FE]=NE();function hh(e,t){const r=t?e?FE:DE:e?$E:kE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const jE={get:hh(!1,!1)},UE={get:hh(!1,!0)},HE={get:hh(!0,!1)},qE={get:hh(!0,!0)};function o2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 a2=new WeakMap,s2=new WeakMap,f2=new WeakMap,u2=new WeakMap;function WE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function KE(e){return e.__v_skip||!Object.isExtensible(e)?0:WE(nv(e))}function No(e){return Ln(e)?e:ch(e,!1,i2,jE,a2)}function l2(e){return ch(e,!1,BE,UE,s2)}function uv(e){return ch(e,!0,n2,HE,f2)}function Wa(e){return ch(e,!0,LE,qE,u2)}function ch(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=KE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function lv(e){return El(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?No(e):e,hv=e=>Rt(e)?uv(e):e;function cv(e){co&&Br&&(e=lt(e),e2(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function dh(e,t){e=lt(e);const r=e.dep;r&&k0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return c2(e,!1)}function h2(e){return c2(e,!0)}function c2(e,t){return Xt(e)?e:new VE(e,t)}class VE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return cv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),dh(this,t))}}function zE(e){dh(e,e.value)}function vo(e){return Xt(e)?e.value:e}function GE(e){return Qe(e)?e():vo(e)}const YE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function dv(e){return po(e)?e:new Proxy(e,YE)}class ZE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>cv(this),()=>dh(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function XE(e){return new ZE(e)}function JE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=d2(e,r);return t}class QE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return wE(lt(this._object),this._key)}}class e8{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function t8(e,t,r){return Xt(e)?e:Qe(e)?new e8(e):Rt(e)&&arguments.length>1?d2(e,t,r):mr(e)}function d2(e,t,r){const i=e[t];return Xt(i)?i:new QE(e,t,r)}class r8{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,dh(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return cv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function i8(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new r8(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ta=[];function Tf(e){ta.push(e)}function Of(){ta.pop()}function Ue(e,...t){ma();const r=ta.length?ta[ta.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=n8();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${xh(r,n.type)}>`).join(` `),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(` -`,...QE(a)),console.warn(...n)}ma()}function JE(){let e=ea[ea.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function QE(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[` -`],...e8(r))}),t}function e8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Rh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...t8(e.props),n]:[a+n]}function t8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...g2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function g2(e,t,r){return Vt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:Xt(t)?(t=g2(e,lt(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=lt(t),r?t:[`${e}=`,t])}function vv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const gv={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. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function en(e,t,r,i){let a;try{a=i?e(...i):e()}catch(n){ba(n,t,r)}return a}function Zr(e,t,r,i){if(Qe(e)){const n=en(e,t,r,i);return n&&fh(n)&&n.catch(u=>{ba(u,t,r)}),n}const a=[];for(let n=0;n>>1;Vf(Er[i])Ji&&Er.splice(t,1)}function gh(e){ze(e)?Ya.push(...e):(!zi||!zi.includes(e,e.allowRecurse?io+1:io))&&Ya.push(e),y2()}function mm(e,t=Kf?Ji+1:0){for(e=e||new Map;tVf(r)-Vf(i)),io=0;ioe.id==null?1/0:e.id,a8=(e,t)=>{const r=Vf(e)-Vf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function b2(e){k0=!1,Kf=!0,e=e||new Map,Er.sort(a8);const t=r=>yv(e,r);try{for(Ji=0;Jii8){const i=t.ownerInstance,a=i&&Xf(i.type);return Ue(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. 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.`),!0}else e.set(t,r+1)}}let go=!1;const ja=new Set;Tl().__VUE_HMR_RUNTIME__={createRecord:Pc(w2),rerender:Pc(u8),reload:Pc(l8)};const aa=new Map;function s8(e){const t=e.type.__hmrId;let r=aa.get(t);r||(w2(t,e.type),r=aa.get(t)),r.instances.add(e)}function f8(e){aa.get(e.type.__hmrId).instances.delete(e)}function w2(e,t){return aa.has(e)?!1:(aa.set(e,{initialDef:If(t),instances:new Set}),!0)}function If(e){return p_(e)?e.__vccOpts:e}function u8(e,t){const r=aa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,If(i.type).render=t),i.renderCache=[],go=!0,i.update(),go=!1}))}function l8(e,t){const r=aa.get(e);if(!r)return;t=If(t),ym(r.initialDef,t);const i=[...r.instances];for(const a of i){const n=If(a.type);ja.has(n)||(n!==r.initialDef&&ym(n,t),ja.add(n)),a.appContext.propsCache.delete(a.type),a.appContext.emitsCache.delete(a.type),a.appContext.optionsCache.delete(a.type),a.ceReload?(ja.add(n),a.ceReload(t.styles),ja.delete(n)):a.parent?lu(a.parent.update):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}gh(()=>{for(const a of i)ja.delete(If(a.type))})}function ym(e,t){Pt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Pc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bi,wf=[],$0=!1;function hu(e,...t){Bi?Bi.emit(e,...t):$0||wf.push({event:e,args:t})}function bv(e,t){var r,i;Bi=e,Bi?(Bi.enabled=!0,wf.forEach(({event:a,args:n})=>Bi.emit(a,...n)),wf=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{bv(n,t)}),setTimeout(()=>{Bi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,$0=!0,wf=[])},3e3)):($0=!0,wf=[])}function h8(e,t){hu("app:init",e,t,{Fragment:Lt,Text:xo,Comment:tr,Static:mo})}function c8(e){hu("app:unmount",e)}const D0=wv("component:added"),_2=wv("component:updated"),d8=wv("component:removed"),p8=e=>{Bi&&typeof Bi.cleanupBuffer=="function"&&!Bi.cleanupBuffer(e)&&d8(e)};function wv(e){return t=>{hu(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const v8=M2("perf:start"),g8=M2("perf:end");function M2(e){return(t,r,i)=>{hu(e,t.appContext.app,t.uid,t,r,i)}}function m8(e,t,r){hu("component:emit",e.appContext.app,e,t,r)}function y8(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||$t;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(xn(t)in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${xn(t)}" prop.`);else{const R=M[t];Qe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),u=n&&t.slice(7);if(u&&u in i){const M=`${u==="modelValue"?"model":u}Modifiers`,{number:S,trim:R}=i[M]||$t;R&&(a=r.map(C=>Vt(C)?C.trim():C)),S&&(a=r.map(Rl))}m8(e,t,a);{const M=t.toLowerCase();M!==t&&i[xn(M)]&&Ue(`Event "${M}" is emitted in component ${Rh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Hr(t)}" instead of "${t}".`)}let c,d=i[c=xn(t)]||i[c=xn(Kr(t))];!d&&n&&(d=i[c=xn(Hr(t))]),d&&Zr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Zr(m,e,6,a)}}function S2(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let u={},c=!1;if(!Qe(e)){const d=m=>{const M=S2(m,t,!0);M&&(c=!0,Pt(u,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>u[d]=null):Pt(u,n),Rt(e)&&i.set(e,u),u)}function mh(e,t){return!e||!Ps(t)?!1:(t=t.slice(2).replace(/Once$/,""),wt(e,t[0].toLowerCase()+t.slice(1))||wt(e,Hr(t))||wt(e,t))}let er=null,yh=null;function zf(e){const t=er;return er=e,yh=e&&e.type.__scopeId||null,t}function x2(e){yh=e}function E2(){yh=null}const b8=e=>_v;function _v(e,t=er,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&z0(-1);const n=zf(t);let u;try{u=e(...a)}finally{zf(n),i._d&&z0(1)}return _2(t),u};return i._n=!0,i._c=!0,i._d=!0,i}let F0=!1;function Cl(){F0=!0}function nl(e){const{type:t,vnode:r,proxy:i,withProxy:a,props:n,propsOptions:[u],slots:c,attrs:d,emit:m,render:M,renderCache:S,data:R,setupState:C,ctx:P,inheritAttrs:k}=e;let L,I;const B=zf(e);F0=!1;try{if(r.shapeFlag&4){const W=a||i;L=Ur(M.call(W,W,S,n,C,R,P)),I=d}else{const W=t;d===n&&Cl(),L=Ur(W.length>1?W(n,{get attrs(){return Cl(),d},slots:c,emit:m}):W(n,null)),I=t.props?d:_8(d)}}catch(W){Bf.length=0,ba(W,e,1),L=Zt(tr)}let H=L,F;if(L.patchFlag>0&&L.patchFlag&2048&&([H,F]=w8(L)),I&&k!==!1){const W=Object.keys(I),{shapeFlag:Y}=H;if(W.length){if(Y&7)u&&W.some(xl)&&(I=M8(I,u)),H=di(H,I);else if(!F0&&H.type!==tr){const ie=Object.keys(d),J=[],V=[];for(let oe=0,_=ie.length;oe<_;oe++){const o=ie[oe];Ps(o)?xl(o)||J.push(o[2].toLowerCase()+o.slice(3)):V.push(o)}V.length&&Ue(`Extraneous non-props attributes (${V.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(bm(H)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),H=di(H),H.dirs=H.dirs?H.dirs.concat(r.dirs):r.dirs),r.transition&&(bm(H)||Ue("Component inside renders non-element root node that cannot be animated."),H.transition=r.transition),F?F(H):L=H,zf(B),L}const w8=e=>{const t=e.children,r=e.dynamicChildren,i=Mv(t);if(!i)return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,u=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Ur(i),u]};function Mv(e){let t;for(let r=0;r{let t;for(const r in e)(r==="class"||r==="style"||Ps(r))&&((t||(t={}))[r]=e[r]);return t},M8=(e,t)=>{const r={};for(const i in e)(!xl(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},bm=e=>e.shapeFlag&7||e.type===tr;function S8(e,t,r){const{props:i,children:a,component:n}=e,{props:u,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&go||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?wm(i,u,m):!!u;if(d&8){const M=t.dynamicProps;for(let S=0;Se.__isSuspense,x8={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,u,c,d,m){e==null?R8(t,r,i,a,n,u,c,d,m):A8(e,t,r,i,a,u,c,d,m)},hydrate:T8,create:xv,normalize:O8},E8=x8;function Gf(e,t){const r=e.props&&e.props[t];Qe(r)&&r()}function R8(e,t,r,i,a,n,u,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=xv(e,a,i,t,S,r,n,u,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,u),R.deps>0?(Gf(e,"onPending"),Gf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,u),Za(R,e.ssFallback)):R.resolve(!1,!0)}function A8(e,t,r,i,a,n,u,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,C=t.ssFallback,{activeBranch:P,pendingBranch:k,isInFallback:L,isHydrating:I}=S;if(k)S.pendingBranch=R,Li(R,k)?(d(k,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():L&&(d(P,C,r,i,a,null,n,u,c),Za(S,C))):(S.pendingId++,I?(S.isHydrating=!1,S.activeBranch=k):m(k,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():(d(P,C,r,i,a,null,n,u,c),Za(S,C))):P&&Li(R,P)?(d(P,R,r,i,a,S,n,u,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0&&S.resolve()));else if(P&&Li(R,P))d(P,R,r,i,a,S,n,u,c),Za(S,R);else if(Gf(t,"onPending"),S.pendingBranch=R,S.pendingId++,d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0)S.resolve();else{const{timeout:B,pendingId:H}=S;B>0?setTimeout(()=>{S.pendingId===H&&S.fallback(C)},B):B===0&&S.fallback(C)}}let _m=!1;function xv(e,t,r,i,a,n,u,c,d,m,M=!1){_m||(_m=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:S,m:R,um:C,n:P,o:{parentNode:k,remove:L}}=m;let I;const B=I8(e);B&&t!=null&&t.pendingBranch&&(I=t.pendingId,t.deps++);const H=e.props?Al(e.props.timeout):void 0;vv(H,"Suspense timeout");const F={vnode:e,parent:t,parentComponent:r,isSVG:u,container:i,hiddenContainer:a,anchor:n,deps:0,pendingId:0,timeout:typeof H=="number"?H:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:M,isUnmounted:!1,effects:[],resolve(W=!1,Y=!1){{if(!W&&!F.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(F.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:ie,activeBranch:J,pendingBranch:V,pendingId:oe,effects:_,parentComponent:o,container:f}=F;if(F.isHydrating)F.isHydrating=!1;else if(!W){const p=J&&V.transition&&V.transition.mode==="out-in";p&&(J.transition.afterLeave=()=>{oe===F.pendingId&&R(V,f,w,0)});let{anchor:w}=F;J&&(w=P(J),C(J,o,F,!0)),p||R(V,f,w,0)}Za(F,V),F.pendingBranch=null,F.isInFallback=!1;let l=F.parent,h=!1;for(;l;){if(l.pendingBranch){l.effects.push(..._),h=!0;break}l=l.parent}h||gh(_),F.effects=[],B&&t&&t.pendingBranch&&I===t.pendingId&&(t.deps--,t.deps===0&&!Y&&t.resolve()),Gf(ie,"onResolve")},fallback(W){if(!F.pendingBranch)return;const{vnode:Y,activeBranch:ie,parentComponent:J,container:V,isSVG:oe}=F;Gf(Y,"onFallback");const _=P(ie),o=()=>{F.isInFallback&&(S(null,W,V,_,J,null,oe,c,d),Za(F,W))},f=W.transition&&W.transition.mode==="out-in";f&&(ie.transition.afterLeave=o),F.isInFallback=!0,C(ie,J,null,!0),f||o()},move(W,Y,ie){F.activeBranch&&R(F.activeBranch,W,Y,ie),F.container=W},next(){return F.activeBranch&&P(F.activeBranch)},registerDep(W,Y){const ie=!!F.pendingBranch;ie&&F.deps++;const J=W.vnode.el;W.asyncDep.catch(V=>{ba(V,W,0)}).then(V=>{if(W.isUnmounted||F.isUnmounted||F.pendingId!==W.suspenseId)return;W.asyncResolved=!0;const{vnode:oe}=W;Tf(oe),Z0(W,V,!1),J&&(oe.el=J);const _=!J&&W.subTree.el;Y(W,oe,k(J||W.subTree.el),J?null:P(W.subTree),F,u,d),_&&L(_),Sv(W,oe.el),Of(),ie&&--F.deps===0&&F.resolve()})},unmount(W,Y){F.isUnmounted=!0,F.activeBranch&&C(F.activeBranch,r,W,Y),F.pendingBranch&&C(F.pendingBranch,r,W,Y)}};return F}function T8(e,t,r,i,a,n,u,c,d){const m=t.suspense=xv(t,i,r,e.parentNode,document.createElement("div"),null,a,n,u,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,u);return m.deps===0&&m.resolve(!1,!0),M}function O8(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=Mm(i?r.default:r),e.ssFallback=i?Mm(r.fallback):Zt(tr)}function Mm(e){let t;if(Qe(e)){const r=fa&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Wr,i_())}if(ze(e)){const r=Mv(e);r||Ue(" slots expect a single root node."),e=r}return e=Ur(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function A2(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):gh(e)}function Za(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e,a=r.el=t.el;i&&i.subTree===r&&(i.vnode.el=a,Sv(i,a))}function I8(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function T2(e,t){return cu(e,null,t)}function O2(e,t){return cu(e,null,Pt({},t,{flush:"post"}))}function P8(e,t){return cu(e,null,Pt({},t,{flush:"sync"}))}const qu={};function lr(e,t,r){return Qe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),cu(e,t,r)}function cu(e,t,{immediate:r,deep:i,flush:a,onTrack:n,onTrigger:u}=$t){var c;t||(r!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const d=W=>{Ue("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=Qw()===((c=Qt)==null?void 0:c.scope)?Qt:null;let M,S=!1,R=!1;if(Xt(e)?(M=()=>e.value,S=Hf(e)):po(e)?(M=()=>e,i=!0):ze(e)?(R=!0,S=e.some(W=>po(W)||Hf(W)),M=()=>e.map(W=>{if(Xt(W))return W.value;if(po(W))return Go(W);if(Qe(W))return en(W,m,2);d(W)})):Qe(e)?t?M=()=>en(e,m,2):M=()=>{if(!(m&&m.isUnmounted))return C&&C(),Zr(e,m,3,[P])}:(M=qr,d(e)),t&&i){const W=M;M=()=>Go(W())}let C,P=W=>{C=H.onStop=()=>{en(W,m,4)}},k;if(fs)if(P=qr,t?r&&Zr(t,m,3,[M(),R?[]:void 0,P]):M(),a==="sync"){const W=g_();k=W.__watcherHandles||(W.__watcherHandles=[])}else return qr;let L=R?new Array(e.length).fill(qu):qu;const I=()=>{if(H.active)if(t){const W=H.run();(i||S||(R?W.some((Y,ie)=>as(Y,L[ie])):as(W,L)))&&(C&&C(),Zr(t,m,3,[W,L===qu?void 0:R&&L[0]===qu?[]:L,P]),L=W)}else H.run()};I.allowRecurse=!!t;let B;a==="sync"?B=I:a==="post"?B=()=>gr(I,m&&m.suspense):(I.pre=!0,m&&(I.id=m.uid),B=()=>lu(I));const H=new uu(M,B);H.onTrack=n,H.onTrigger=u,t?r?I():L=H.run():a==="post"?gr(H.run.bind(H),m&&m.suspense):H.run();const F=()=>{H.stop(),m&&m.scope&&iv(m.scope.effects,H)};return k&&k.push(F),F}function C8(e,t,r){const i=this.proxy,a=Vt(e)?e.includes(".")?I2(i,e):()=>i[e]:e.bind(i,i);let n;Qe(t)?n=t:(n=t.handler,r=t);const u=Qt;Eo(this);const c=cu(a,n.bind(i),r);return u?Eo(u):yo(),c}function I2(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a{Go(r,t)});else if(Gw(e))for(const r in e)Go(e[r],t);return e}function P2(e){V4(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function ol(e,t){const r=er;if(r===null)return Ue("withDirectives can only be used inside render functions."),e;const i=Eh(r)||r.proxy,a=e.dirs||(e.dirs=[]);for(let n=0;n{e.isMounted=!0}),Mh(()=>{e.isUnmounting=!0}),e}const ni=[Function,Array],Rv={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ni,onEnter:ni,onAfterEnter:ni,onEnterCancelled:ni,onBeforeLeave:ni,onLeave:ni,onAfterLeave:ni,onLeaveCancelled:ni,onBeforeAppear:ni,onAppear:ni,onAfterAppear:ni,onAppearCancelled:ni},B8={name:"BaseTransition",props:Rv,setup(e,{slots:t}){const r=Fi(),i=Ev();let a;return()=>{const n=t.default&&bh(t.default(),!0);if(!n||!n.length)return;let u=n[0];if(n.length>1){let k=!1;for(const L of n)if(L.type!==tr){if(k){Ue(" can only be used on a single element or component. Use for lists.");break}u=L,k=!0}}const c=lt(e),{mode:d}=c;if(d&&d!=="in-out"&&d!=="out-in"&&d!=="default"&&Ue(`invalid mode: ${d}`),i.isLeaving)return Cc(u);const m=Sm(u);if(!m)return Cc(u);const M=ss(m,c,i,r);sa(m,M);const S=r.subTree,R=S&&Sm(S);let C=!1;const{getTransitionKey:P}=m.type;if(P){const k=P();a===void 0?a=k:k!==a&&(a=k,C=!0)}if(R&&R.type!==tr&&(!Li(m,R)||C)){const k=ss(R,c,i,r);if(sa(R,k),d==="out-in")return i.isLeaving=!0,k.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&r.update()},Cc(u);d==="in-out"&&m.type!==tr&&(k.delayLeave=(L,I,B)=>{const H=B2(i,R);H[String(R.key)]=R,L._leaveCb=()=>{I(),L._leaveCb=void 0,delete M.delayedLeave},M.delayedLeave=B})}return u}}},C2=B8;function B2(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ss(e,t,r,i){const{appear:a,mode:n,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:m,onEnterCancelled:M,onBeforeLeave:S,onLeave:R,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:k,onAppear:L,onAfterAppear:I,onAppearCancelled:B}=t,H=String(e.key),F=B2(r,e),W=(J,V)=>{J&&Zr(J,i,9,V)},Y=(J,V)=>{const oe=V[1];W(J,V),ze(J)?J.every(_=>_.length<=1)&&oe():J.length<=1&&oe()},ie={mode:n,persisted:u,beforeEnter(J){let V=c;if(!r.isMounted)if(a)V=k||c;else return;J._leaveCb&&J._leaveCb(!0);const oe=F[H];oe&&Li(e,oe)&&oe.el._leaveCb&&oe.el._leaveCb(),W(V,[J])},enter(J){let V=d,oe=m,_=M;if(!r.isMounted)if(a)V=L||d,oe=I||m,_=B||M;else return;let o=!1;const f=J._enterCb=l=>{o||(o=!0,l?W(_,[J]):W(oe,[J]),ie.delayedLeave&&ie.delayedLeave(),J._enterCb=void 0)};V?Y(V,[J,f]):f()},leave(J,V){const oe=String(e.key);if(J._enterCb&&J._enterCb(!0),r.isUnmounting)return V();W(S,[J]);let _=!1;const o=J._leaveCb=f=>{_||(_=!0,V(),f?W(P,[J]):W(C,[J]),J._leaveCb=void 0,F[oe]===e&&delete F[oe])};F[oe]=e,R?Y(R,[J,o]):o()},clone(J){return ss(J,t,r,i)}};return ie}function Cc(e){if(Ls(e))return e=di(e),e.children=null,e}function Sm(e){return Ls(e)?e.children?e.children[0]:void 0:e}function sa(e,t){e.shapeFlag&6&&e.component?sa(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 bh(e,t=!1,r){let i=[],a=0;for(let n=0;n1)for(let n=0;nPt({name:e.name},t,{setup:e}))():e}const ta=e=>!!e.type.__asyncLoader;function L8(e){Qe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:u=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let C;return d||(C=d=t().catch(P=>{if(P=P instanceof Error?P:new Error(String(P)),c)return new Promise((k,L)=>{c(P,()=>k(S()),()=>L(P),M+1)});throw P}).then(P=>{if(C!==d&&d)return d;if(P||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),P&&(P.__esModule||P[Symbol.toStringTag]==="Module")&&(P=P.default),P&&!Rt(P)&&!Qe(P))throw new Error(`Invalid async component load result: ${P}`);return m=P,P}))};return Bs({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const C=Qt;if(m)return()=>Bc(m,C);const P=B=>{d=null,ba(B,C,13,!i)};if(u&&C.suspense||fs)return R().then(B=>()=>Bc(B,C)).catch(B=>(P(B),()=>i?Zt(i,{error:B}):null));const k=mr(!1),L=mr(),I=mr(!!a);return a&&setTimeout(()=>{I.value=!1},a),n!=null&&setTimeout(()=>{if(!k.value&&!L.value){const B=new Error(`Async component timed out after ${n}ms.`);P(B),L.value=B}},n),R().then(()=>{k.value=!0,C.parent&&Ls(C.parent.vnode)&&lu(C.parent.update)}).catch(B=>{P(B),L.value=B}),()=>{if(k.value&&m)return Bc(m,C);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!I.value)return Zt(r)}}})}function Bc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,u=Zt(e,i,a);return u.ref=r,u.ce=n,delete t.vnode.ce,u}const Ls=e=>e.type.__isKeepAlive,N8={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=Fi(),i=r.ctx;if(!i.renderer)return()=>{const B=t.default&&t.default();return B&&B.length===1?B[0]:B};const a=new Map,n=new Set;let u=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(B,H,F,W,Y)=>{const ie=B.component;m(B,H,F,0,c),d(ie.vnode,B,H,F,ie,c,W,B.slotScopeIds,Y),gr(()=>{ie.isDeactivated=!1,ie.a&&so(ie.a);const J=B.props&&B.props.onVnodeMounted;J&&Dr(J,ie.parent,B)},c),D0(ie)},i.deactivate=B=>{const H=B.component;m(B,R,null,1,c),gr(()=>{H.da&&so(H.da);const F=B.props&&B.props.onVnodeUnmounted;F&&Dr(F,H.parent,B),H.isDeactivated=!0},c),D0(H)};function C(B){Lc(B),M(B,r,c,!0)}function P(B){a.forEach((H,F)=>{const W=Xf(H.type);W&&(!B||!B(W))&&k(F)})}function k(B){const H=a.get(B);!u||!Li(H,u)?C(H):u&&Lc(u),a.delete(B),n.delete(B)}lr(()=>[e.include,e.exclude],([B,H])=>{B&&P(F=>_f(B,F)),H&&P(F=>!_f(H,F))},{flush:"post",deep:!0});let L=null;const I=()=>{L!=null&&a.set(L,Nc(r.subTree))};return Ns(I),_h(I),Mh(()=>{a.forEach(B=>{const{subTree:H,suspense:F}=r,W=Nc(H);if(B.type===W.type&&B.key===W.key){Lc(W);const Y=W.component.da;Y&&gr(Y,F);return}C(B)})}),()=>{if(L=null,!t.default)return null;const B=t.default(),H=B[0];if(B.length>1)return Ue("KeepAlive should contain exactly one component child."),u=null,B;if(!Nn(H)||!(H.shapeFlag&4)&&!(H.shapeFlag&128))return u=null,H;let F=Nc(H);const W=F.type,Y=Xf(ta(F)?F.type.__asyncResolved||{}:W),{include:ie,exclude:J,max:V}=e;if(ie&&(!Y||!_f(ie,Y))||J&&Y&&_f(J,Y))return u=F,H;const oe=F.key==null?W:F.key,_=a.get(oe);return F.el&&(F=di(F),H.shapeFlag&128&&(H.ssContent=F)),L=oe,_?(F.el=_.el,F.component=_.component,F.transition&&sa(F,F.transition),F.shapeFlag|=512,n.delete(oe),n.add(oe)):(n.add(oe),V&&n.size>parseInt(V,10)&&k(n.values().next().value)),F.shapeFlag|=256,u=F,R2(H.type)?H:F}}},k8=N8;function _f(e,t){return ze(e)?e.some(r=>_f(r,t)):Vt(e)?e.split(",").includes(t):K4(e)?e.test(t):!1}function L2(e,t){k2(e,"a",t)}function N2(e,t){k2(e,"da",t)}function k2(e,t,r=Qt){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(wh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Ls(a.parent.vnode)&&$8(i,t,r,a),a=a.parent}}function $8(e,t,r,i){const a=wh(t,e,i,!0);Sh(()=>{iv(i[t],a)},r)}function Lc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Nc(e){return e.shapeFlag&128?e.ssContent:e}function wh(e,t,r=Qt,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...u)=>{if(r.isUnmounted)return;ga(),Eo(r);const c=Zr(t,r,e,u);return yo(),ma(),c});return i?a.unshift(n):a.push(n),n}else{const a=xn(gv[e].replace(/ hook$/,""));Ue(`${a} 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 Vn=e=>(t,r=Qt)=>(!fs||e==="sp")&&wh(e,(...i)=>t(...i),r),$2=Vn("bm"),Ns=Vn("m"),Av=Vn("bu"),_h=Vn("u"),Mh=Vn("bum"),Sh=Vn("um"),D2=Vn("sp"),F2=Vn("rtg"),j2=Vn("rtc");function U2(e,t=Qt){wh("ec",e,t)}const Bl="components",D8="directives";function F8(e,t){return Tv(Bl,e,!0,t)||e}const H2=Symbol.for("v-ndc");function j8(e){return Vt(e)?Tv(Bl,e,!1)||e:e||H2}function U8(e){return Tv(D8,e)}function Tv(e,t,r=!0,i=!1){const a=er||Qt;if(a){const n=a.type;if(e===Bl){const c=Xf(n,!1);if(c&&(c===t||c===Kr(t)||c===_o(Kr(t))))return n}const u=xm(a[e]||n[e],t)||xm(a.appContext[e],t);if(!u&&i)return n;if(r&&!u){const c=e===Bl?` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return u}else Ue(`resolve${_o(e.slice(0,-1))} can only be used in render() or setup().`)}function xm(e,t){return e&&(e[t]||e[Kr(t)]||e[_o(Kr(t))])}function Ii(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||Vt(e)){a=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,n&&n[c]));else{const u=Object.keys(e);a=new Array(u.length);for(let c=0,d=u.length;c{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function j0(e,t,r={},i,a){if(er.isCE||er.parent&&ta(er.parent)&&er.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(Ue("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."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const u=n&&q2(n(r)),c=Cv(Lt,{key:r.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function q2(e){return e.some(t=>Nn(t)?!(t.type===tr||t.type===Lt&&!q2(t.children)):!0)?e:null}function q8(e,t){const r={};if(!Rt(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:xn(i)]=e[i];return r}const U0=e=>e?l_(e)?Eh(e)||e.proxy:U0(e.parent):null,ra=Pt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Wa(e.props),$attrs:e=>Wa(e.attrs),$slots:e=>Wa(e.slots),$refs:e=>Wa(e.refs),$parent:e=>U0(e.parent),$root:e=>U0(e.root),$emit:e=>e.emit,$options:e=>Iv(e),$forceUpdate:e=>e.f||(e.f=()=>lu(e.update)),$nextTick:e=>e.n||(e.n=uo.bind(e.proxy)),$watch:e=>C8.bind(e)}),Ov=e=>e==="_"||e==="$",kc=(e,t)=>e!==$t&&!e.__isScriptSetup&&wt(e,t),Pf={get({_:e},t){const{ctx:r,setupState:i,data:a,props:n,accessCache:u,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const C=u[t];if(C!==void 0)switch(C){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(kc(i,t))return u[t]=1,i[t];if(a!==$t&&wt(a,t))return u[t]=2,a[t];if((m=e.propsOptions[0])&&wt(m,t))return u[t]=3,n[t];if(r!==$t&&wt(r,t))return u[t]=4,r[t];H0&&(u[t]=0)}}const M=ra[t];let S,R;if(M)return t==="$attrs"?(Tr(e,"get",t),Cl()):t==="$slots"&&Tr(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==$t&&wt(r,t))return u[t]=4,r[t];if(R=d.config.globalProperties,wt(R,t))return R[t];er&&(!Vt(t)||t.indexOf("__v")!==0)&&(a!==$t&&Ov(t[0])&&wt(a,t)?Ue(`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===er&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return kc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&wt(a,t)?(Ue(`Cannot mutate - - - - - - + + + + + + + - + diff --git a/web/settings/modules/legacy_smart_home/smarthomeconfig.php b/web/settings/modules/legacy_smart_home/smarthomeconfig.php index f404a67646..01c1b1c8bf 100644 --- a/web/settings/modules/legacy_smart_home/smarthomeconfig.php +++ b/web/settings/modules/legacy_smart_home/smarthomeconfig.php @@ -848,6 +848,7 @@ + @@ -859,7 +860,7 @@
-
+
@@ -913,13 +914,13 @@
-
+
-
+
From af505bcfd704129cfe0e8e52c18a484e69a916ea Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 25 Aug 2023 11:13:54 +0200 Subject: [PATCH 104/121] fix display wrapper --- web/display/index.html | 4 +- web/display/processAllMqttMsg.js | 102 ++++++++++++++++++++----------- web/display/setupMqttServices.js | 35 +++++++---- 3 files changed, 92 insertions(+), 49 deletions(-) diff --git a/web/display/index.html b/web/display/index.html index b2f21819b6..75d218e57a 100644 --- a/web/display/index.html +++ b/web/display/index.html @@ -13,9 +13,9 @@ // load mqtt library 'js/mqttws31.js', // functions for processing messages - 'display/processAllMqttMsg.js?ver=20230127', + 'display/processAllMqttMsg.js?ver=20230825', // functions performing mqtt and start mqtt-service - 'display/setupMqttServices.js?ver=20230127', + 'display/setupMqttServices.js?ver=20230825', ]; scriptsToLoad.forEach((src) => { diff --git a/web/display/processAllMqttMsg.js b/web/display/processAllMqttMsg.js index 0db1f2feda..2295ff38a5 100644 --- a/web/display/processAllMqttMsg.js +++ b/web/display/processAllMqttMsg.js @@ -32,45 +32,79 @@ function setIframeSource() { iframe.classList.add("hide"); return; } - let host = location.host; - var query = ""; + var host = ""; + var query = new URLSearchParams(); + var destination = ""; if (data["openWB/general/extern"]) { - if (data["openWB/general/extern_display_mode"] == "local") { - addLog("Local display in extern mode not yet supported! fallback to main"); + switch (data["openWB/general/extern_display_mode"]) { + case "local": + // host = location.host; + // ... + // break; + // ToDo, fallback to primary + addLog("Local display in secondary mode not yet supported! fallback to primary display"); + case "primary": + default: + // retrieve display theme from primary + host = data["openWB/internal_chargepoint/global_data"]["parent_ip"]; + // we need to know how to map local charge points to primary + query.append("parentChargePoint1", data["openWB/internal_chargepoint/0/data/parent_cp"]); + query.append("parentChargePoint2", data["openWB/internal_chargepoint/1/data/parent_cp"]); + break; } - host = data["openWB/isss/parentWB"]; - query += `?parentChargePoint1=${data["openWB/isss/parentCPlp1"]}`; - query += `&parentChargePoint2=${data["openWB/isss/parentCPlp2"]}`; - } - const theme = data["openWB/optional/int_display/theme"].type; - const destination = `${location.protocol}//${host}/openWB/web/display/themes/${theme}/${query}`; + // load display from primary or local + destination = `${location.protocol}//${host}/openWB/web/display/?${query.toString()}`; + if (destination != iframe.src) { + addLog(`all done, loading theme from primary`); + iframe.src = destination; + } + setTimeout(() => { + startup.classList.add("hide"); + iframe.classList.remove("hide"); + }, 2000); + } else { + host = location.host; + const theme = data["openWB/optional/int_display/theme"].type; - var request = new XMLHttpRequest(); - request.onload = function () { - if (this.readyState == 4) { - if (this.status == 200) { - addLog(`theme '${theme}' is valid`) - if (destination != iframe.src) { - addLog(`all done, starting theme '${theme}' with url '${destination}'`); - iframe.src = destination; - } - setTimeout(() => { - startup.classList.add("hide"); - iframe.classList.remove("hide"); - }, 2000); - } else { - addLog(`theme '${theme}' not found on server!`); + if (data["openWB/optional/int_display/only_local_charge_points"]) { + const searchParams = new URLSearchParams(location.search); + + if (searchParams.has("parentChargePoint1")) { + query.append("parentChargePoint1", searchParams.get("parentChargePoint1")); + } + if (searchParams.has("parentChargePoint2")) { + query.append("parentChargePoint2", searchParams.get("parentChargePoint2")); } } - }; - request.ontimeout = function () { - console.warn("onTimeout", this.readyState, this.status); - addLog(`check for theme '${theme}' timed out!`); - }; - request.timeout = 2000; - console.debug("checking url:", destination); - request.open("GET", destination, true); - request.send(); + destination = `${location.protocol}//${host}/openWB/web/display/themes/${theme}/?${query.toString()}`; + + var request = new XMLHttpRequest(); + request.onload = function () { + if (this.readyState == 4) { + if (this.status == 200) { + addLog(`theme '${theme}' is valid`) + if (destination != iframe.src) { + addLog(`all done, starting theme '${theme}' with url '${destination}'`); + iframe.src = destination; + } + setTimeout(() => { + startup.classList.add("hide"); + iframe.classList.remove("hide"); + }, 2000); + } else { + addLog(`theme '${theme}' not found on server!`); + } + } + }; + request.ontimeout = function () { + console.warn("onTimeout", this.readyState, this.status); + addLog(`check for theme '${theme}' timed out!`); + }; + request.timeout = 2000; + console.debug("checking url:", destination); + request.open("GET", destination, true); + request.send(); + } } else { console.debug("some topics still missing"); } diff --git a/web/display/setupMqttServices.js b/web/display/setupMqttServices.js index 8c931e964f..e5ae20a71f 100644 --- a/web/display/setupMqttServices.js +++ b/web/display/setupMqttServices.js @@ -9,13 +9,16 @@ var topicsToSubscribe = { "openWB/system/boot_done": false, "openWB/system/update_in_progress": false, "openWB/general/extern": false, +} +var primaryTopicsToSubscribe = { "openWB/optional/int_display/theme": false, + "openWB/optional/int_display/only_local_charge_points": false, } -var isssTopicsToSubscribe = { +var secondaryTopicsToSubscribe = { "openWB/general/extern_display_mode": false, - "openWB/isss/parentWB": false, - "openWB/isss/parentCPlp1": false, - "openWB/isss/parentCPlp2": false, + "openWB/internal_chargepoint/global_data": false, + "openWB/internal_chargepoint/0/data/parent_cp": false, + "openWB/internal_chargepoint/1/data/parent_cp": false, }; var data = {}; @@ -35,7 +38,10 @@ var options = { Object.keys(topicsToSubscribe).forEach((topic) => { client.subscribe(topic, { qos: 0 }); }); - Object.keys(isssTopicsToSubscribe).forEach((topic) => { + Object.keys(primaryTopicsToSubscribe).forEach((topic) => { + client.subscribe(topic, { qos: 0 }); + }); + Object.keys(secondaryTopicsToSubscribe).forEach((topic) => { client.subscribe(topic, { qos: 0 }); }); }, @@ -65,13 +71,12 @@ client.onConnectionLost = function (responseObject) { }; // Gets called whenever you receive a message client.onMessageArrived = function (message) { - if ( - message.destinationName.includes("/isss/") || - message.destinationName.includes("/general/extern_display_mode") - ){ - isssTopicsToSubscribe[message.destinationName] = true; - } else { + if (Object.keys(topicsToSubscribe).includes(message.destinationName)) { topicsToSubscribe[message.destinationName] = true; + } else if (Object.keys(primaryTopicsToSubscribe).includes(message.destinationName)) { + primaryTopicsToSubscribe[message.destinationName] = true; + } else if (Object.keys(secondaryTopicsToSubscribe).includes(message.destinationName)) { + secondaryTopicsToSubscribe[message.destinationName] = true; } data[message.destinationName] = JSON.parse(message.payloadString); handleMessage(message.destinationName, message.payloadString); @@ -97,8 +102,12 @@ function allTopicsReceived() { ready &= topicsToSubscribe[topic]; }); if (data["openWB/general/extern"]) { - Object.keys(isssTopicsToSubscribe).forEach((topic) => { - ready &= isssTopicsToSubscribe[topic]; + Object.keys(secondaryTopicsToSubscribe).forEach((topic) => { + ready &= secondaryTopicsToSubscribe[topic]; + }); + } else { + Object.keys(primaryTopicsToSubscribe).forEach((topic) => { + ready &= primaryTopicsToSubscribe[topic]; }); } return ready; From f644ffe2a14ff3d5fed5ebc9043f988b4af5062a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 25 Aug 2023 11:23:54 +0200 Subject: [PATCH 105/121] external display mode and filter --- packages/control/general.py | 2 +- packages/helpermodules/setdata.py | 2 ++ packages/helpermodules/update_config.py | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/control/general.py b/packages/control/general.py index 64d99a1cf5..5a06ecd30c 100644 --- a/packages/control/general.py +++ b/packages/control/general.py @@ -96,7 +96,7 @@ def ripple_control_receiver_factory() -> RippleControlReceiver: class GeneralData: chargemode_config: ChargemodeConfig = field(default_factory=chargemode_config_factory) control_interval: int = 10 - extern_display_mode: str = "local" + extern_display_mode: str = "primary" extern: bool = False external_buttons_hw: bool = False grid_protection_active: bool = False diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index c019f52f1e..3e656ccee5 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -792,6 +792,8 @@ def process_optional_topic(self, msg: mqtt.MQTTMessage): self._validate_value(msg, bool) elif "openWB/set/optional/int_display/on_if_plugged_in" in msg.topic: self._validate_value(msg, bool) + elif "openWB/set/optional/int_display/only_local_charge_points" in msg.topic: + self._validate_value(msg, bool) elif "openWB/set/optional/int_display/pin_active" in msg.topic: self._validate_value(msg, bool) elif "openWB/set/optional/int_display/pin_code" in msg.topic: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 72af5e1a0e..a6f17ac900 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -390,7 +390,7 @@ class UpdateConfig: ("openWB/general/chargemode_config/unbalanced_load_limit", 18), ("openWB/general/control_interval", 10), ("openWB/general/extern", False), - ("openWB/general/extern_display_mode", "local"), + ("openWB/general/extern_display_mode", "primary"), ("openWB/general/external_buttons_hw", False), ("openWB/general/grid_protection_configured", True), ("openWB/general/notifications/selected", "none"), @@ -413,6 +413,7 @@ class UpdateConfig: ("openWB/optional/int_display/standby", 60), ("openWB/optional/int_display/rotation", 180), ("openWB/optional/int_display/theme", dataclass_utils.asdict(CardsDisplayTheme())), + ("openWB/optional/int_display/only_local_charge_points", False), ("openWB/optional/led/active", False), ("openWB/optional/rfid/active", False), ("openWB/system/backup_cloud/config", {"type": None, "configuration": {}}), From fa40f5f9b4a13dd5765b81c6b2cb27627c4d241a Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 1 Sep 2023 10:40:51 +0200 Subject: [PATCH 106/121] rebuild --- ...eLog-f2b39be5.js => ChargeLog-be6ba638.js} | 2 +- ...js => ChargePointInstallation-40572ce1.js} | 2 +- .../{Chart-b8ee6f3b.js => Chart-372a98ba.js} | 2 +- ...ig-baf072fa.js => CloudConfig-fb035176.js} | 2 +- ...22142622.js => DataManagement-f7a0955c.js} | 2 +- ...ig-5c4c9ffc.js => DebugConfig-0afeacb4.js} | 2 +- ...cff.js => GeneralChargeConfig-6358761f.js} | 2 +- ...-f25442cf.js => GeneralConfig-ce149f67.js} | 35 ++----------------- .../assets/HardwareInstallation-053ec617.js | 1 + .../assets/HardwareInstallation-0ea898ce.js | 1 - ...4f2.js => InstantChargeConfig-1646b158.js} | 2 +- ...-3159f92a.js => LegalSettings-c100c109.js} | 2 +- ...99.js => LoadManagementConfig-8a4d7343.js} | 2 +- ...08894f.js => MqttBridgeConfig-9fb8ed69.js} | 2 +- ...a3bd.js => OptionalComponents-df4003ba.js} | 10 +++--- ...8ca745ae.js => PVChargeConfig-3851cc53.js} | 2 +- ...d.js => ScheduledChargeConfig-ff0252cd.js} | 2 +- ...{Status-7ee068bd.js => Status-b79c5fd8.js} | 2 +- ...upport-8e52ed51.js => Support-d2984420.js} | 2 +- web/settings/assets/System-765e2323.js | 1 - web/settings/assets/System-d604c488.js | 1 + ...e-ba263cde.js => TestingStore-082dc7f3.js} | 2 +- ...284125.js => TimeChargeConfig-6ea9f121.js} | 2 +- ...-322b25b7.js => VehicleConfig-1e731d22.js} | 2 +- web/settings/assets/bat-815fdbb1.js | 1 + web/settings/assets/counter-a2c453f6.js | 1 + web/settings/assets/device-91520693.js | 1 + .../{index-fc7a54eb.js => index-cbcca7a0.js} | 2 +- web/settings/assets/inverter-aba6e6d2.js | 1 + ...ehicle-a2646a86.js => vehicle-839ee3de.js} | 2 +- web/settings/index.html | 2 +- 31 files changed, 34 insertions(+), 61 deletions(-) rename web/settings/assets/{ChargeLog-f2b39be5.js => ChargeLog-be6ba638.js} (99%) rename web/settings/assets/{ChargePointInstallation-470f2248.js => ChargePointInstallation-40572ce1.js} (99%) rename web/settings/assets/{Chart-b8ee6f3b.js => Chart-372a98ba.js} (99%) rename web/settings/assets/{CloudConfig-baf072fa.js => CloudConfig-fb035176.js} (99%) rename web/settings/assets/{DataManagement-22142622.js => DataManagement-f7a0955c.js} (99%) rename web/settings/assets/{DebugConfig-5c4c9ffc.js => DebugConfig-0afeacb4.js} (98%) rename web/settings/assets/{GeneralChargeConfig-ec57fcff.js => GeneralChargeConfig-6358761f.js} (97%) rename web/settings/assets/{GeneralConfig-f25442cf.js => GeneralConfig-ce149f67.js} (52%) create mode 100644 web/settings/assets/HardwareInstallation-053ec617.js delete mode 100644 web/settings/assets/HardwareInstallation-0ea898ce.js rename web/settings/assets/{InstantChargeConfig-676664f2.js => InstantChargeConfig-1646b158.js} (96%) rename web/settings/assets/{LegalSettings-3159f92a.js => LegalSettings-c100c109.js} (97%) rename web/settings/assets/{LoadManagementConfig-9bdba699.js => LoadManagementConfig-8a4d7343.js} (99%) rename web/settings/assets/{MqttBridgeConfig-2808894f.js => MqttBridgeConfig-9fb8ed69.js} (99%) rename web/settings/assets/{OptionalComponents-69f6a3bd.js => OptionalComponents-df4003ba.js} (76%) rename web/settings/assets/{PVChargeConfig-8ca745ae.js => PVChargeConfig-3851cc53.js} (99%) rename web/settings/assets/{ScheduledChargeConfig-7c8c846d.js => ScheduledChargeConfig-ff0252cd.js} (97%) rename web/settings/assets/{Status-7ee068bd.js => Status-b79c5fd8.js} (99%) rename web/settings/assets/{Support-8e52ed51.js => Support-d2984420.js} (98%) delete mode 100644 web/settings/assets/System-765e2323.js create mode 100644 web/settings/assets/System-d604c488.js rename web/settings/assets/{TestingStore-ba263cde.js => TestingStore-082dc7f3.js} (99%) rename web/settings/assets/{TimeChargeConfig-ef284125.js => TimeChargeConfig-6ea9f121.js} (96%) rename web/settings/assets/{VehicleConfig-322b25b7.js => VehicleConfig-1e731d22.js} (99%) create mode 100644 web/settings/assets/bat-815fdbb1.js create mode 100644 web/settings/assets/counter-a2c453f6.js create mode 100644 web/settings/assets/device-91520693.js rename web/settings/assets/{index-fc7a54eb.js => index-cbcca7a0.js} (96%) create mode 100644 web/settings/assets/inverter-aba6e6d2.js rename web/settings/assets/{vehicle-a2646a86.js => vehicle-839ee3de.js} (97%) diff --git a/web/settings/assets/ChargeLog-f2b39be5.js b/web/settings/assets/ChargeLog-be6ba638.js similarity index 99% rename from web/settings/assets/ChargeLog-f2b39be5.js rename to web/settings/assets/ChargeLog-be6ba638.js index 8feb955170..94f47bf962 100644 --- a/web/settings/assets/ChargeLog-f2b39be5.js +++ b/web/settings/assets/ChargeLog-be6ba638.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-ad83e535.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-94ac8c48.js";import{C as N}from"./index-fc7a54eb.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-ad83e535.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-94ac8c48.js";import{C as N}from"./index-cbcca7a0.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-470f2248.js b/web/settings/assets/ChargePointInstallation-40572ce1.js similarity index 99% rename from web/settings/assets/ChargePointInstallation-470f2248.js rename to web/settings/assets/ChargePointInstallation-40572ce1.js index cf10e5407c..cd6f1f0033 100644 --- a/web/settings/assets/ChargePointInstallation-470f2248.js +++ b/web/settings/assets/ChargePointInstallation-40572ce1.js @@ -1 +1 @@ -import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-ad83e535.js";import{_ as L,C as oe}from"./index-fc7a54eb.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-07057692.js"),["assets/chargePoint-07057692.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a56bc604.js"),["assets/chargePoint-a56bc604.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-7200a105.js"),["assets/chargePoint-7200a105.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-80e648c2.js"),["assets/chargePoint-80e648c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-4a124bb9.js"),["assets/chargePoint-4a124bb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-10f32a1a.js"),["assets/chargePoint-10f32a1a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-516069c3.js"),["assets/commands-516069c3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-ad83e535.js";import{_ as L,C as oe}from"./index-cbcca7a0.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-07057692.js"),["assets/chargePoint-07057692.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a56bc604.js"),["assets/chargePoint-a56bc604.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-7200a105.js"),["assets/chargePoint-7200a105.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-80e648c2.js"),["assets/chargePoint-80e648c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-4a124bb9.js"),["assets/chargePoint-4a124bb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-10f32a1a.js"),["assets/chargePoint-10f32a1a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-516069c3.js"),["assets/commands-516069c3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-b8ee6f3b.js b/web/settings/assets/Chart-372a98ba.js similarity index 99% rename from web/settings/assets/Chart-b8ee6f3b.js rename to web/settings/assets/Chart-372a98ba.js index 40f90f7a8c..70cc78adc8 100644 --- a/web/settings/assets/Chart-b8ee6f3b.js +++ b/web/settings/assets/Chart-372a98ba.js @@ -1 +1 @@ -import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-fc7a54eb.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-dd3fd71e.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; +import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-cbcca7a0.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-dd3fd71e.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; diff --git a/web/settings/assets/CloudConfig-baf072fa.js b/web/settings/assets/CloudConfig-fb035176.js similarity index 99% rename from web/settings/assets/CloudConfig-baf072fa.js rename to web/settings/assets/CloudConfig-fb035176.js index 52531d3730..d0578f7eed 100644 --- a/web/settings/assets/CloudConfig-baf072fa.js +++ b/web/settings/assets/CloudConfig-fb035176.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-fc7a54eb.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0f3013d.js"),["assets/backup_cloud-e0f3013d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f1ce5010.js"),["assets/backup_cloud-f1ce5010.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; +import{l as z,a0 as V,a1 as H,a2 as j,a3 as A,a4 as P,F as R}from"./vendor-fortawesome-ad83e535.js";import{_ as D,C as N}from"./index-cbcca7a0.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function K(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0f3013d.js"),["assets/backup_cloud-e0f3013d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f1ce5010.js"),["assets/backup_cloud-f1ce5010.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; diff --git a/web/settings/assets/DebugConfig-5c4c9ffc.js b/web/settings/assets/DebugConfig-0afeacb4.js similarity index 98% rename from web/settings/assets/DebugConfig-5c4c9ffc.js rename to web/settings/assets/DebugConfig-0afeacb4.js index 14b82f8c21..eacbdd3ddf 100644 --- a/web/settings/assets/DebugConfig-5c4c9ffc.js +++ b/web/settings/assets/DebugConfig-0afeacb4.js @@ -1,2 +1,2 @@ -import{l as h,Z as w,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as _}from"./index-fc7a54eb.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Z as w,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as _}from"./index-cbcca7a0.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-ec57fcff.js b/web/settings/assets/GeneralChargeConfig-6358761f.js similarity index 97% rename from web/settings/assets/GeneralChargeConfig-ec57fcff.js rename to web/settings/assets/GeneralChargeConfig-6358761f.js index 122d76e0c7..dc9f48382f 100644 --- a/web/settings/assets/GeneralChargeConfig-ec57fcff.js +++ b/web/settings/assets/GeneralChargeConfig-6358761f.js @@ -1 +1 @@ -import{C as c}from"./index-fc7a54eb.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-cbcca7a0.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-f25442cf.js b/web/settings/assets/GeneralConfig-ce149f67.js similarity index 52% rename from web/settings/assets/GeneralConfig-f25442cf.js rename to web/settings/assets/GeneralConfig-ce149f67.js index ed2eea12ae..8b992c5c34 100644 --- a/web/settings/assets/GeneralConfig-f25442cf.js +++ b/web/settings/assets/GeneralConfig-ce149f67.js @@ -1,35 +1,4 @@ -import{C as f}from"./index-fc7a54eb.js";import{_ as h,p as r,k as l,l as u,q as i,A as o,L as s,z as b,u as a}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},_={name:"generalConfigForm"},w=i("br",null,null,-1),W=i("br",null,null,-1),z=i("br",null,null,-1),k=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},x=i("br",null,null,-1),y=i("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),V=i("br",null,null,-1),q=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),P={key:0},L={key:1},N=i("br",null,null,-1);function A(e,t,D,E,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return l(),u("div",B,[i("form",_,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),w,W,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.'),z,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),k,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"]),b(` - - `)]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),u("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),x,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),V,q]),_:1},8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),_,W,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.'),k,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),z,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"])]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),V,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),x,P]),_:1},8,["model-value"]),b(`
- `),o(g,{title:"Lade-Log"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),u("div",P,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),u("div",L,[o(m,{title:"Preis je kWh",min:0,step:1e-4,unit:"€","model-value":e.$store.state.mqtt["openWB/general/price_kwh"],"onUpdate:modelValue":t[3]||(t[3]=n=>e.updateState("openWB/general/price_kwh",n))},{help:s(()=>[a(" Dient zur Berechnung der Ladekosten im Lade-Log."),N,a(" Es können bis zu 4 Nachkommastellen genutzt werden. ")]),_:1},8,["model-value"]),o(d,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[4]||(t[4]=n=>e.updateState("openWB/general/range_unit",n)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"])]))]),_:1}),o(c,{formName:"generalConfigForm",onSave:t[5]||(t[5]=n=>e.$emit("save")),onReset:t[6]||(t[6]=n=>e.$emit("reset")),onDefaults:t[7]||(t[7]=n=>e.$emit("defaults"))})])])}const Z=h(v,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{Z as default}; + `),o(g,{title:"Lade-Log"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",q,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",L,[o(m,{title:"Preis je kWh",min:0,step:1e-4,unit:"€","model-value":e.$store.state.mqtt["openWB/general/price_kwh"],"onUpdate:modelValue":t[3]||(t[3]=n=>e.updateState("openWB/general/price_kwh",n))},{help:s(()=>[a(" Dient zur Berechnung der Ladekosten im Lade-Log."),N,a(" Es können bis zu 4 Nachkommastellen genutzt werden. ")]),_:1},8,["model-value"]),o(d,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[4]||(t[4]=n=>e.updateState("openWB/general/range_unit",n)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"])]))]),_:1}),o(c,{formName:"generalConfigForm",onSave:t[5]||(t[5]=n=>e.$emit("save")),onReset:t[6]||(t[6]=n=>e.$emit("reset")),onDefaults:t[7]||(t[7]=n=>e.$emit("defaults"))})])])}const Z=h(v,[["render",E],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{Z as default}; diff --git a/web/settings/assets/HardwareInstallation-053ec617.js b/web/settings/assets/HardwareInstallation-053ec617.js new file mode 100644 index 0000000000..4ff052996b --- /dev/null +++ b/web/settings/assets/HardwareInstallation-053ec617.js @@ -0,0 +1 @@ +import{l as N,d as U,t as G,R as F,S as H,K as J,L as Z,M as Q,F as $}from"./vendor-fortawesome-ad83e535.js";import{_ as e,C as X}from"./index-cbcca7a0.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a92f022e.js"),["assets/bat-a92f022e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-60655200.js"),["assets/counter-60655200.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b47e8b65.js"),["assets/inverter-b47e8b65.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-3980db8f.js"),["assets/bat-3980db8f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-fcc6cfc8.js"),["assets/counter-fcc6cfc8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c6cc5286.js"),["assets/external_inverter-c6cc5286.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-57f7e67c.js"),["assets/inverter-57f7e67c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-d1af67af.js"),["assets/bat-d1af67af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-7b85a5b2.js"),["assets/counter-7b85a5b2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-d335a007.js"),["assets/counter-d335a007.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-91521524.js"),["assets/inverter-91521524.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-4320b5cc.js"),["assets/bat-4320b5cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-fbf1efa1.js"),["assets/counter-fbf1efa1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-debacbf1.js"),["assets/external_inverter-debacbf1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-35d50734.js"),["assets/inverter-35d50734.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-af942561.js"),["assets/counter-af942561.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b35ac71f.js"),["assets/inverter-b35ac71f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-ac5ee104.js"),["assets/bat-ac5ee104.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-da58c807.js"),["assets/counter-da58c807.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-0a8a02aa.js"),["assets/inverter-0a8a02aa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-80bc8859.js"),["assets/bat-80bc8859.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-0068172e.js"),["assets/counter_s0-0068172e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-802e0059.js"),["assets/counter_sm-802e0059.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-fb25d42c.js"),["assets/inverter-fb25d42c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fd9f4fe4.js"),["assets/bat-fd9f4fe4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-9097a073.js"),["assets/counter-9097a073.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d63a850e.js"),["assets/inverter-d63a850e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-2f8005f2.js"),["assets/bat-2f8005f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-6d0620dd.js"),["assets/counter-6d0620dd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-735276eb.js"),["assets/inverter-735276eb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-ccba567b.js"),["assets/bat-ccba567b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-8d4f402a.js"),["assets/counter-8d4f402a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-be294b52.js"),["assets/inverter-be294b52.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-815fdbb1.js"),["assets/bat-815fdbb1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-a2c453f6.js"),["assets/counter-a2c453f6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-91520693.js"),["assets/device-91520693.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-aba6e6d2.js"),["assets/inverter-aba6e6d2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-7a7be3d3.js"),["assets/counter-7a7be3d3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f9178e22.js"),["assets/bat-f9178e22.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-46a15c2b.js"),["assets/counter-46a15c2b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-da627431.js"),["assets/inverter-da627431.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-ad208981.js"),["assets/counter-ad208981.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-d7dcc616.js"),["assets/inverter-d7dcc616.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-b6d89f35.js"),["assets/inverter-b6d89f35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-45b559ec.js"),["assets/bat-45b559ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-f56715cd.js"),["assets/counter-f56715cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-3515d2b5.js"),["assets/inverter-3515d2b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-5b0b9661.js"),["assets/counter-5b0b9661.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-66b1df21.js"),["assets/inverter-66b1df21.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-904c9172.js"),["assets/bat-904c9172.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-2e4fa5c2.js"),["assets/counter-2e4fa5c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-f266f49d.js"),["assets/inverter-f266f49d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-212960fc.js"),["assets/bat-212960fc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-816c921e.js"),["assets/counter-816c921e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-e383405a.js"),["assets/inverter-e383405a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3e58123d.js"),["assets/bat-3e58123d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-3d2b7acc.js"),["assets/bat-3d2b7acc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-21f55471.js"),["assets/counter-21f55471.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-09d68c12.js"),["assets/inverter-09d68c12.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-ba791935.js"),["assets/bat-ba791935.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-6369ff43.js"),["assets/counter-6369ff43.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0daad30f.js"),["assets/inverter-0daad30f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c0320c10.js"),["assets/inverter-c0320c10.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-3df9b0e7.js"),["assets/counter-3df9b0e7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f0ad6bcd.js"),["assets/inverter-f0ad6bcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-46b207f3.js"),["assets/counter-46b207f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-4ed4378e.js"),["assets/inverter-4ed4378e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-557284f3.js"),["assets/bat-557284f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-77841659.js"),["assets/counter-77841659.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-3b84e31d.js"),["assets/inverter-3b84e31d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-61bcf2f8.js"),["assets/bat-61bcf2f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d03b355d.js"),["assets/counter-d03b355d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-42feff92.js"),["assets/inverter-42feff92.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-12170e78.js"),["assets/bat-12170e78.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-f900cffa.js"),["assets/inverter-f900cffa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-cbc92919.js"),["assets/bat-cbc92919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-82a793a2.js"),["assets/counter-82a793a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-89a115de.js"),["assets/inverter-89a115de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b30c239d.js"),["assets/counter-b30c239d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-70b9e720.js"),["assets/counter-70b9e720.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6afece8c.js"),["assets/inverter-6afece8c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cb226603.js"),["assets/bat-cb226603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-817c3655.js"),["assets/bat_smart_energy-817c3655.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-fb6b0fb9.js"),["assets/counter-fb6b0fb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-8ebf65c2.js"),["assets/inverter-8ebf65c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-4b5ddf83.js"),["assets/bat-4b5ddf83.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-bce80bd5.js"),["assets/inverter-bce80bd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-eab5abf7.js"),["assets/counter-eab5abf7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-5500500b.js"),["assets/inverter-5500500b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-57df9eec.js"),["assets/counter-57df9eec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-18fd3233.js"),["assets/counter-18fd3233.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-39afe3b5.js"),["assets/inverter-39afe3b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-1c5a2313.js"),["assets/counter-1c5a2313.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b33414cf.js"),["assets/inverter-b33414cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-8af3358d.js"),["assets/bat-8af3358d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-b2081459.js"),["assets/counter-b2081459.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-973593c5.js"),["assets/inverter-973593c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-4dc3cbd5.js"),["assets/counter-4dc3cbd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-22be4ed9.js"),["assets/inverter-22be4ed9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-e1949609.js"),["assets/bat-e1949609.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2365410a.js"),["assets/counter-2365410a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4989c79d.js"),["assets/external_inverter-4989c79d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-983f9bf4.js"),["assets/inverter-983f9bf4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b91f4e63.js"),["assets/bat-b91f4e63.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-2b727919.js"),["assets/inverter-2b727919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-9ff121c5.js"),["assets/bat-9ff121c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-f322702a.js"),["assets/counter-f322702a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-a4f4de69.js"),["assets/inverter-a4f4de69.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-f30697e9.js"),["assets/bat-f30697e9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-df3e561f.js"),["assets/counter-df3e561f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3e855a0b.js"),["assets/inverter-3e855a0b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6fcf71db.js"),["assets/bat-6fcf71db.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-3df75149.js"),["assets/inverter-3df75149.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-3dbfaf1b.js"),["assets/bat-3dbfaf1b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-478d9577.js"),["assets/counter-478d9577.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-ae905211.js"),["assets/inverter-ae905211.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-1a27b5a2.js"),["assets/inverter-1a27b5a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-f75dd877.js"),["assets/bat-f75dd877.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-2a189926.js"),["assets/counter-2a189926.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-bc54ef72.js"),["assets/inverter-bc54ef72.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-e58852af.js"),["assets/bat_api-e58852af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-260d9b94.js"),["assets/bat_modbus-260d9b94.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-73783603.js"),["assets/counter-73783603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-180a64ef.js"),["assets/bat-180a64ef.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-1905ec77.js"),["assets/counter-1905ec77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-d5ca1a80.js"),["assets/inverter-d5ca1a80.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-c0f3f4ac.js"),["assets/counter-c0f3f4ac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-00ec4a93.js"),["assets/counter-00ec4a93.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-ba59974f.js"),["assets/inverter-ba59974f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-98ed6e35.js"),["assets/inverter-98ed6e35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-91520693.js"),["assets/device-91520693.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-0ea898ce.js b/web/settings/assets/HardwareInstallation-0ea898ce.js deleted file mode 100644 index 3716b44b6a..0000000000 --- a/web/settings/assets/HardwareInstallation-0ea898ce.js +++ /dev/null @@ -1 +0,0 @@ -import{l as N,d as U,t as G,R as F,S as H,K as J,L as Z,M as Q,F as $}from"./vendor-fortawesome-ad83e535.js";import{_ as e,C as X}from"./index-fc7a54eb.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a92f022e.js"),["assets/bat-a92f022e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-60655200.js"),["assets/counter-60655200.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b47e8b65.js"),["assets/inverter-b47e8b65.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-3980db8f.js"),["assets/bat-3980db8f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-fcc6cfc8.js"),["assets/counter-fcc6cfc8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c6cc5286.js"),["assets/external_inverter-c6cc5286.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-57f7e67c.js"),["assets/inverter-57f7e67c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-d1af67af.js"),["assets/bat-d1af67af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-7b85a5b2.js"),["assets/counter-7b85a5b2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-d335a007.js"),["assets/counter-d335a007.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-91521524.js"),["assets/inverter-91521524.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-4320b5cc.js"),["assets/bat-4320b5cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-fbf1efa1.js"),["assets/counter-fbf1efa1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-debacbf1.js"),["assets/external_inverter-debacbf1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-35d50734.js"),["assets/inverter-35d50734.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-af942561.js"),["assets/counter-af942561.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b35ac71f.js"),["assets/inverter-b35ac71f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-ac5ee104.js"),["assets/bat-ac5ee104.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-da58c807.js"),["assets/counter-da58c807.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-0a8a02aa.js"),["assets/inverter-0a8a02aa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-80bc8859.js"),["assets/bat-80bc8859.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-0068172e.js"),["assets/counter_s0-0068172e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-802e0059.js"),["assets/counter_sm-802e0059.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-fb25d42c.js"),["assets/inverter-fb25d42c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fd9f4fe4.js"),["assets/bat-fd9f4fe4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-9097a073.js"),["assets/counter-9097a073.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d63a850e.js"),["assets/inverter-d63a850e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-2f8005f2.js"),["assets/bat-2f8005f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-6d0620dd.js"),["assets/counter-6d0620dd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-735276eb.js"),["assets/inverter-735276eb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-ccba567b.js"),["assets/bat-ccba567b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-8d4f402a.js"),["assets/counter-8d4f402a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-be294b52.js"),["assets/inverter-be294b52.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-7a7be3d3.js"),["assets/counter-7a7be3d3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f9178e22.js"),["assets/bat-f9178e22.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-46a15c2b.js"),["assets/counter-46a15c2b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-da627431.js"),["assets/inverter-da627431.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-ad208981.js"),["assets/counter-ad208981.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-d7dcc616.js"),["assets/inverter-d7dcc616.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-b6d89f35.js"),["assets/inverter-b6d89f35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-45b559ec.js"),["assets/bat-45b559ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-f56715cd.js"),["assets/counter-f56715cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-3515d2b5.js"),["assets/inverter-3515d2b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-5b0b9661.js"),["assets/counter-5b0b9661.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-66b1df21.js"),["assets/inverter-66b1df21.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-904c9172.js"),["assets/bat-904c9172.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-2e4fa5c2.js"),["assets/counter-2e4fa5c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-f266f49d.js"),["assets/inverter-f266f49d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-212960fc.js"),["assets/bat-212960fc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-816c921e.js"),["assets/counter-816c921e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-e383405a.js"),["assets/inverter-e383405a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3e58123d.js"),["assets/bat-3e58123d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-3d2b7acc.js"),["assets/bat-3d2b7acc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-21f55471.js"),["assets/counter-21f55471.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-09d68c12.js"),["assets/inverter-09d68c12.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-ba791935.js"),["assets/bat-ba791935.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-6369ff43.js"),["assets/counter-6369ff43.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0daad30f.js"),["assets/inverter-0daad30f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c0320c10.js"),["assets/inverter-c0320c10.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-3df9b0e7.js"),["assets/counter-3df9b0e7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f0ad6bcd.js"),["assets/inverter-f0ad6bcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-46b207f3.js"),["assets/counter-46b207f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-4ed4378e.js"),["assets/inverter-4ed4378e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-557284f3.js"),["assets/bat-557284f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-77841659.js"),["assets/counter-77841659.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-3b84e31d.js"),["assets/inverter-3b84e31d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-61bcf2f8.js"),["assets/bat-61bcf2f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d03b355d.js"),["assets/counter-d03b355d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-42feff92.js"),["assets/inverter-42feff92.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-12170e78.js"),["assets/bat-12170e78.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-f900cffa.js"),["assets/inverter-f900cffa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-cbc92919.js"),["assets/bat-cbc92919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-82a793a2.js"),["assets/counter-82a793a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-89a115de.js"),["assets/inverter-89a115de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b30c239d.js"),["assets/counter-b30c239d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-70b9e720.js"),["assets/counter-70b9e720.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6afece8c.js"),["assets/inverter-6afece8c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cb226603.js"),["assets/bat-cb226603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-817c3655.js"),["assets/bat_smart_energy-817c3655.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-fb6b0fb9.js"),["assets/counter-fb6b0fb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-8ebf65c2.js"),["assets/inverter-8ebf65c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-4b5ddf83.js"),["assets/bat-4b5ddf83.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-bce80bd5.js"),["assets/inverter-bce80bd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-eab5abf7.js"),["assets/counter-eab5abf7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-5500500b.js"),["assets/inverter-5500500b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-57df9eec.js"),["assets/counter-57df9eec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-18fd3233.js"),["assets/counter-18fd3233.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-39afe3b5.js"),["assets/inverter-39afe3b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-1c5a2313.js"),["assets/counter-1c5a2313.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b33414cf.js"),["assets/inverter-b33414cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-8af3358d.js"),["assets/bat-8af3358d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-b2081459.js"),["assets/counter-b2081459.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-973593c5.js"),["assets/inverter-973593c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-4dc3cbd5.js"),["assets/counter-4dc3cbd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-22be4ed9.js"),["assets/inverter-22be4ed9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-e1949609.js"),["assets/bat-e1949609.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2365410a.js"),["assets/counter-2365410a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4989c79d.js"),["assets/external_inverter-4989c79d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-983f9bf4.js"),["assets/inverter-983f9bf4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b91f4e63.js"),["assets/bat-b91f4e63.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-2b727919.js"),["assets/inverter-2b727919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-9ff121c5.js"),["assets/bat-9ff121c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-f322702a.js"),["assets/counter-f322702a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-a4f4de69.js"),["assets/inverter-a4f4de69.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-f30697e9.js"),["assets/bat-f30697e9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-df3e561f.js"),["assets/counter-df3e561f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3e855a0b.js"),["assets/inverter-3e855a0b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6fcf71db.js"),["assets/bat-6fcf71db.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-3df75149.js"),["assets/inverter-3df75149.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-3dbfaf1b.js"),["assets/bat-3dbfaf1b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-478d9577.js"),["assets/counter-478d9577.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-ae905211.js"),["assets/inverter-ae905211.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-1a27b5a2.js"),["assets/inverter-1a27b5a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-f75dd877.js"),["assets/bat-f75dd877.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-2a189926.js"),["assets/counter-2a189926.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-bc54ef72.js"),["assets/inverter-bc54ef72.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-e58852af.js"),["assets/bat_api-e58852af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-260d9b94.js"),["assets/bat_modbus-260d9b94.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-73783603.js"),["assets/counter-73783603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-180a64ef.js"),["assets/bat-180a64ef.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-1905ec77.js"),["assets/counter-1905ec77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-d5ca1a80.js"),["assets/inverter-d5ca1a80.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-c0f3f4ac.js"),["assets/counter-c0f3f4ac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-00ec4a93.js"),["assets/counter-00ec4a93.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-ba59974f.js"),["assets/inverter-ba59974f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-98ed6e35.js"),["assets/inverter-98ed6e35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-676664f2.js b/web/settings/assets/InstantChargeConfig-1646b158.js similarity index 96% rename from web/settings/assets/InstantChargeConfig-676664f2.js rename to web/settings/assets/InstantChargeConfig-1646b158.js index 2289b8a848..af8d8f6fa3 100644 --- a/web/settings/assets/InstantChargeConfig-676664f2.js +++ b/web/settings/assets/InstantChargeConfig-1646b158.js @@ -1 +1 @@ -import{C as l}from"./index-fc7a54eb.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-cbcca7a0.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-3159f92a.js b/web/settings/assets/LegalSettings-c100c109.js similarity index 97% rename from web/settings/assets/LegalSettings-3159f92a.js rename to web/settings/assets/LegalSettings-c100c109.js index 6011c6d209..dbef7554cd 100644 --- a/web/settings/assets/LegalSettings-3159f92a.js +++ b/web/settings/assets/LegalSettings-c100c109.js @@ -1 +1 @@ -import{C as g}from"./index-fc7a54eb.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-cbcca7a0.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-9bdba699.js b/web/settings/assets/LoadManagementConfig-8a4d7343.js similarity index 99% rename from web/settings/assets/LoadManagementConfig-9bdba699.js rename to web/settings/assets/LoadManagementConfig-8a4d7343.js index 64eb13cdd7..372f593632 100644 --- a/web/settings/assets/LoadManagementConfig-9bdba699.js +++ b/web/settings/assets/LoadManagementConfig-8a4d7343.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as $}from"./index-fc7a54eb.js";import{S as x}from"./OpenwbSortableList-8561f9a9.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as $}from"./index-cbcca7a0.js";import{S as x}from"./OpenwbSortableList-8561f9a9.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-2808894f.js b/web/settings/assets/MqttBridgeConfig-9fb8ed69.js similarity index 99% rename from web/settings/assets/MqttBridgeConfig-2808894f.js rename to web/settings/assets/MqttBridgeConfig-9fb8ed69.js index f9f507c557..dbcc7de430 100644 --- a/web/settings/assets/MqttBridgeConfig-2808894f.js +++ b/web/settings/assets/MqttBridgeConfig-9fb8ed69.js @@ -1 +1 @@ -import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as D}from"./index-fc7a54eb.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=v(()=>f("hr",null,null,-1)),R=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as D}from"./index-cbcca7a0.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=v(()=>f("hr",null,null,-1)),R=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OptionalComponents-69f6a3bd.js b/web/settings/assets/OptionalComponents-df4003ba.js similarity index 76% rename from web/settings/assets/OptionalComponents-69f6a3bd.js rename to web/settings/assets/OptionalComponents-df4003ba.js index b9cd2c9fb6..a59e7dda26 100644 --- a/web/settings/assets/OptionalComponents-69f6a3bd.js +++ b/web/settings/assets/OptionalComponents-df4003ba.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-fc7a54eb.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as u,l as b,A as o,L as l,u as a,x,q as r,a0 as $,y as g,a1 as W,z as d}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,s,c,k,p){const f=i("openwb-base-alert"),v=i("openwb-base-textarea");return u(),b("div",q,[o(f,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(s.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>p.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(f,{subtype:"info"},{default:l(()=>[r("pre",null,x(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),C={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),$({loader:()=>T(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-af0ce411.js"),["assets/displayTheme-af0ce411.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function z(t,n,s,c,k,p){return u(),g(W(p.myComponent),{configuration:s.configuration,displayThemeType:s.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=f=>p.updateConfiguration(f))},null,40,["configuration","displayThemeType"])}const I=D(C,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),O={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(s=>s.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},F={name:"optionalComponentsForm"},P={key:0},R=r("br",null,null,-1),M=r("br",null,null,-1),j=["innerHTML"],U={key:0},H=r("br",null,null,-1),J=r("hr",null,null,-1),Z={key:1},K={key:2},G=r("hr",null,null,-1),Q={key:0};function X(t,n,s,c,k,p){const f=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),L=i("openwb-base-select-input"),E=i("openwb-display-theme-proxy"),h=i("openwb-base-submit-buttons");return u(),b("div",N,[r("form",F,[o(m,{title:"RFID"},{default:l(()=>[o(f,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(u(),b("div",P,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,r("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):d("v-if",!0)]),_:1}),d(` +import{_ as w,C as B}from"./index-cbcca7a0.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as D,p as s,k as f,l as b,A as o,L as a,u as l,x,q as i,a0 as T,y as _,a1 as $,z as r}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,u,c,g,d){const p=s("openwb-base-alert"),v=s("openwb-base-textarea");return f(),b("div",q,[o(p,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(u.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>d.updateConfiguration(m,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:a(()=>[i("pre",null,x(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),z={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),T({loader:()=>W(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-af0ce411.js"),["assets/displayTheme-af0ce411.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function C(t,n,u,c,g,d){return f(),_($(d.myComponent),{configuration:u.configuration,displayThemeType:u.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=p=>d.updateConfiguration(p))},null,40,["configuration","displayThemeType"])}const O=D(z,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),I={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:O},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","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"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},P={name:"optionalComponentsForm"},F={key:0},R=i("br",null,null,-1),M=i("br",null,null,-1),U=["innerHTML"],j={key:0},H=i("br",null,null,-1),J=i("hr",null,null,-1),Z={key:1},K=i("hr",null,null,-1),G=i("br",null,null,-1),Q=i("hr",null,null,-1),X={key:2},Y=i("hr",null,null,-1),tt=i("hr",null,null,-1),nt={key:0};function et(t,n,u,c,g,d){const p=s("openwb-base-button-group-input"),v=s("openwb-base-alert"),m=s("openwb-base-card"),y=s("openwb-base-heading"),h=s("openwb-base-range-input"),k=s("openwb-base-select-input"),L=s("openwb-display-theme-proxy"),E=s("openwb-base-submit-buttons");return f(),b("div",N,[i("form",P,[o(m,{title:"RFID"},{default:a(()=>[o(p,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:a(()=>[l(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(f(),b("div",F,[o(v,{subtype:"info"},{default:a(()=>[l(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,l(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,i("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,U)]),_:1})])):r("v-if",!0)]),_:1}),r(`
- `),o(m,{title:"Display (intern oder extern)"},{default:l(()=>[o(f,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":n[1]||(n[1]=e=>t.updateState("openWB/optional/int_display/active",e)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:l(()=>[a(' 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?(u(),b("div",U,[o(f,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":n[2]||(n[2]=e=>t.updateState("openWB/optional/int_display/rotation",e)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:l(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),H,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),J,o(_,null,{default:l(()=>[a(" Display Standby ")]),_:1}),o(y,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":n[3]||(n[3]=e=>t.updateState("openWB/optional/int_display/standby",e)),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}]},{help:l(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"]),d(` `),o(m,{title:"Display (intern oder extern)"},{default:a(()=>[o(p,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":n[1]||(n[1]=e=>t.updateState("openWB/optional/int_display/active",e)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:a(()=>[l(' 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?(f(),b("div",j,[o(p,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":n[2]||(n[2]=e=>t.updateState("openWB/optional/int_display/rotation",e)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:a(()=>[l(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),H,l(" Diese Einstellung erfordert ein Raspberry Pi Display. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),J,o(y,null,{default:a(()=>[l(" Display Standby ")]),_:1}),o(h,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":n[3]||(n[3]=e=>t.updateState("openWB/optional/int_display/standby",e)),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}]},{help:a(()=>[l(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"]),r(` - `)])):d("v-if",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),b("div",Z,[o(v,{subtype:"info"},{default:l(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),b("div",K,[d(`
+
`)])):r("v-if",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(f(),b("div",Z,[K,o(k,{title:"Art der Anzeige",options:[{value:"primary",text:"Primary openWB"},{value:"local",text:"diese(r) Ladepunkt(e)"}],"model-value":t.$store.state.mqtt["openWB/general/extern_display_mode"],"onUpdate:modelValue":n[4]||(n[4]=e=>t.updateState("openWB/general/extern_display_mode",e))},{help:a(()=>[l(' Wird hier "Primary openWB" ausgewählt, dann ist die Darstellung identisch zum Display der regelnden openWB. Alle Anzeigen und Änderungen sind möglich. Je nach Einstellung in der primary openWB werden die angezeigten Ladepunkte auf den/die an dieser openWB vorhandenen Ladepunkte beschränkt.'),G,l(' Die Option "diese(r) Ladepunkt(e)" ermöglicht eine minimale Anzeige und Bedienung der an dieser openWB verfügbaren Ladepunkte. ')]),_:1},8,["options","model-value"]),Q,o(v,{subtype:"info"},{default:a(()=>[l(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(f(),b("div",X,[r(`
PIN-Sperre -
`),G,t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(u(),b("div",Q,[o(L,{class:"mb-2",title:"Theme des Displays",options:p.displayThemeList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":n[4]||(n[4]=e=>p.updateSelectedDisplayTheme(e))},{help:l(()=>[a(" 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,["options","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(u(),g(E,{key:0,displayThemeType:t.$store.state.mqtt["openWB/optional/int_display/theme"].type,configuration:t.$store.state.mqtt["openWB/optional/int_display/theme"].configuration,"onUpdate:configuration":n[5]||(n[5]=e=>p.updateConfiguration("openWB/optional/int_display/theme",e))},null,8,["displayThemeType","configuration"])):d("v-if",!0)])):d("v-if",!0)]))]),_:1}),d(` +
`),Y,o(p,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":n[5]||(n[5]=e=>t.updateState("openWB/optional/int_display/only_local_charge_points",e)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:a(()=>[l(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),tt,t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(f(),b("div",nt,[o(k,{class:"mb-2",title:"Theme des Displays",options:d.displayThemeList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":n[6]||(n[6]=e=>d.updateSelectedDisplayTheme(e))},{help:a(()=>[l(" 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,["options","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(f(),_(L,{key:0,displayThemeType:t.$store.state.mqtt["openWB/optional/int_display/theme"].type,configuration:t.$store.state.mqtt["openWB/optional/int_display/theme"].configuration,"onUpdate:configuration":n[7]||(n[7]=e=>d.updateConfiguration("openWB/optional/int_display/theme",e))},null,8,["displayThemeType","configuration"])):r("v-if",!0)])):r("v-if",!0)]))]),_:1}),r(`
Diese Einstellungen sind nicht verfügbar, solange sich @@ -1079,4 +1079,4 @@ import{_ as w,C as B}from"./index-fc7a54eb.js";import{_ as T}from"./dynamic-impo />
-
`),o(h,{formName:"optionalComponentsForm",onSave:n[6]||(n[6]=e=>t.$emit("save")),onReset:n[7]||(n[7]=e=>t.$emit("reset")),onDefaults:n[8]||(n[8]=e=>t.$emit("defaults"))})])])}const st=D(O,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{st as default}; + `),o(E,{formName:"optionalComponentsForm",onSave:n[8]||(n[8]=e=>t.$emit("save")),onReset:n[9]||(n[9]=e=>t.$emit("reset")),onDefaults:n[10]||(n[10]=e=>t.$emit("defaults"))})])])}const dt=D(I,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{dt as default}; diff --git a/web/settings/assets/PVChargeConfig-8ca745ae.js b/web/settings/assets/PVChargeConfig-3851cc53.js similarity index 99% rename from web/settings/assets/PVChargeConfig-8ca745ae.js rename to web/settings/assets/PVChargeConfig-3851cc53.js index 452c2d40ef..51329dabe3 100644 --- a/web/settings/assets/PVChargeConfig-8ca745ae.js +++ b/web/settings/assets/PVChargeConfig-3851cc53.js @@ -1 +1 @@ -import{C as w}from"./index-fc7a54eb.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as w}from"./index-cbcca7a0.js";import{_ as W,p as g,k as o,l as d,q as r,A as i,L as l,u as a,y as _,z as v}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const B={name:"OpenwbPVChargeConfig",mixins:[w],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"]}},methods:{calculateControlMode(){const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];if(typeof n<"u")return n[0]===-230&&n[1]===0?"export":n[0]===0&&n[1]===230?"import":"individual"},setControlMode(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(console.debug("set controlMode",e),e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break;case"individual":this.updateState(n,[-230,230]);break}},updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-7c8c846d.js b/web/settings/assets/ScheduledChargeConfig-ff0252cd.js similarity index 97% rename from web/settings/assets/ScheduledChargeConfig-7c8c846d.js rename to web/settings/assets/ScheduledChargeConfig-ff0252cd.js index 2758f55fb6..aab64f86d1 100644 --- a/web/settings/assets/ScheduledChargeConfig-7c8c846d.js +++ b/web/settings/assets/ScheduledChargeConfig-ff0252cd.js @@ -1 +1 @@ -import{C as g}from"./index-fc7a54eb.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-cbcca7a0.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-7ee068bd.js b/web/settings/assets/Status-b79c5fd8.js similarity index 99% rename from web/settings/assets/Status-7ee068bd.js rename to web/settings/assets/Status-b79c5fd8.js index 23c850da77..aee058e963 100644 --- a/web/settings/assets/Status-7ee068bd.js +++ b/web/settings/assets/Status-b79c5fd8.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-ad83e535.js";import{C as Z}from"./index-fc7a54eb.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-ad83e535.js";import{C as Z}from"./index-cbcca7a0.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-8e52ed51.js b/web/settings/assets/Support-d2984420.js similarity index 98% rename from web/settings/assets/Support-8e52ed51.js rename to web/settings/assets/Support-d2984420.js index ec88a2a49e..cbc941a212 100644 --- a/web/settings/assets/Support-8e52ed51.js +++ b/web/settings/assets/Support-d2984420.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-ad83e535.js";import{C as B}from"./index-fc7a54eb.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-ad83e535.js";import{C as B}from"./index-cbcca7a0.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-765e2323.js b/web/settings/assets/System-765e2323.js deleted file mode 100644 index 56a0538f91..0000000000 --- a/web/settings/assets/System-765e2323.js +++ /dev/null @@ -1 +0,0 @@ -import{l as W,_ as S,p as q,$ as C,O as A,a0 as $,F as x}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-fc7a54eb.js";import{_ as U,p as l,k as b,l as f,A as t,L as o,q as a,z as B,u as i,n as y,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";W.add(S,q,C,A,$);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(s,e={}){this.$emit("sendCommand",{command:s,data:e})},getBranchOptions(){var s=this.$store.state.mqtt["openWB/system/available_branches"],e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.push({value:c,text:c+" ("+h.commit+")"});return e},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var s=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(s!==void 0)for(const[c,h]of Object.entries(s))e.unshift({value:c,text:h});return e.unshift({value:"*HEAD*",text:"Aktuellster Stand"}),e},updateConfiguration(s,e){console.debug("updateConfiguration",s,e),this.updateState(s,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},u=s=>(D("data-v-059847f6"),s=s(),I(),s),O={class:"system"},N=u(()=>a("h2",null,"Achtung!",-1)),R=u(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=u(()=>a("br",null,null,-1)),se=u(()=>a("br",null,null,-1)),ne=u(()=>a("br",null,null,-1)),ae=u(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(s,e,c,h,g,r){const k=l("openwb-base-button-group-input"),m=l("openwb-base-alert"),w=l("openwb-base-text-input"),_=l("openwb-base-card"),d=l("font-awesome-icon"),p=l("openwb-base-click-button"),v=l("openwb-base-select-input");return b(),f("div",O,[t(m,{subtype:"danger"},{default:o(()=>[N,R,t(k,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),g.warningAcknowledged?(b(),f("div",Z,[a("form",G,[t(_,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[t(p,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[i(" Informationen aktualisieren "),t(d,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[t(p,{class:y(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[i(" Update "),t(d,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(w,{title:"Entwicklungszweig",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>s.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),t(w,{title:"installierte Version",readonly:"",class:y(r.updateAvailable?"text-danger":"text-success"),modelValue:s.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>s.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),t(w,{title:"aktuellste Version",readonly:"",modelValue:s.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>s.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(b(),z(_,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(b(!0),f(F,null,T(s.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(b(),f("li",{key:V},j(n),1))),128))])]),_:1})):B("v-if",!0),t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[t(_,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[t(p,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[i(" Neustart "),t(d,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[t(p,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[i(" Ausschalten "),t(d,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[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})]),a("form",ee,[t(_,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[t(p,{class:y(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),t(d,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[t(m,{subtype:"danger"},{default:o(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),t(m,{subtype:"warning"},{default:o(()=>[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."),te,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,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.'),ne,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),t(v,{title:"Entwicklungszweig",options:r.getBranchOptions(),"model-value":s.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>s.updateState("openWB/system/current_branch",n))},null,8,["options","model-value"]),t(v,{title:"Tag",options:r.getBranchTagOptions(),modelValue:g.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>g.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):B("v-if",!0)])}const he=U(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{he as default}; diff --git a/web/settings/assets/System-d604c488.js b/web/settings/assets/System-d604c488.js new file mode 100644 index 0000000000..d250b8b245 --- /dev/null +++ b/web/settings/assets/System-d604c488.js @@ -0,0 +1 @@ +import{l as W,_ as S,p as q,$ as C,O as A,a0 as x,F as $}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-cbcca7a0.js";import{_ as U,p as c,k as g,l as y,A as s,L as o,q as a,z as k,u as d,n as v,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";W.add(S,q,C,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",m="master",w=[t,e,m],p=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==m?-1:i.value==m||l.value>i.value?1:l.value(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=f(()=>a("h2",null,"Achtung!",-1)),R=f(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=f(()=>a("br",null,null,-1)),se=f(()=>a("br",null,null,-1)),ne=f(()=>a("br",null,null,-1)),ae=f(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function le(t,e,m,w,p,r){const h=c("openwb-base-button-group-input"),u=c("openwb-base-alert"),l=c("openwb-base-text-input"),i=c("openwb-base-card"),b=c("font-awesome-icon"),_=c("openwb-base-click-button"),B=c("openwb-base-select-input");return g(),y("div",N,[s(u,{subtype:"danger"},{default:o(()=>[O,R,s(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),p.warningAcknowledged?(g(),y("div",Z,[a("form",G,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[s(_,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[d(" Informationen aktualisieren "),s(b,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[s(_,{class:v(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[d(" Update "),s(b,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:v(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(g(),z(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(g(!0),y(F,null,T(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(g(),y("li",{key:V},j(n),1))),128))])]),_:1})):k("v-if",!0),s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[s(_,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[d(" Neustart "),s(b,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[s(_,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[d(" Ausschalten "),s(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" 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})]),a("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[s(_,{class:v(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(u,{subtype:"warning"},{default:o(()=>[d(" 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."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' 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.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(B,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(B,{title:"Tag",options:r.getBranchTagOptions(),modelValue:p.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>p.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):k("v-if",!0)])}const be=U(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default}; diff --git a/web/settings/assets/TestingStore-ba263cde.js b/web/settings/assets/TestingStore-082dc7f3.js similarity index 99% rename from web/settings/assets/TestingStore-ba263cde.js rename to web/settings/assets/TestingStore-082dc7f3.js index 4b9fe2542e..5ae9632f4e 100644 --- a/web/settings/assets/TestingStore-ba263cde.js +++ b/web/settings/assets/TestingStore-082dc7f3.js @@ -1 +1 @@ -import{C as h}from"./index-fc7a54eb.js";import{S as y}from"./OpenwbSortableList-8561f9a9.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-cbcca7a0.js";import{S as y}from"./OpenwbSortableList-8561f9a9.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-ef284125.js b/web/settings/assets/TimeChargeConfig-6ea9f121.js similarity index 96% rename from web/settings/assets/TimeChargeConfig-ef284125.js rename to web/settings/assets/TimeChargeConfig-6ea9f121.js index d322f9c44f..3bb32765f6 100644 --- a/web/settings/assets/TimeChargeConfig-ef284125.js +++ b/web/settings/assets/TimeChargeConfig-6ea9f121.js @@ -1 +1 @@ -import{C as l}from"./index-fc7a54eb.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-cbcca7a0.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-322b25b7.js b/web/settings/assets/VehicleConfig-1e731d22.js similarity index 99% rename from web/settings/assets/VehicleConfig-322b25b7.js rename to web/settings/assets/VehicleConfig-1e731d22.js index 2e2c2e3210..e19492da1a 100644 --- a/web/settings/assets/VehicleConfig-322b25b7.js +++ b/web/settings/assets/VehicleConfig-1e731d22.js @@ -1 +1 @@ -import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-ad83e535.js";import{_ as S,C as ie}from"./index-fc7a54eb.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-c865f314.js"),["assets/vehicle-c865f314.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-2c5d967c.js"),["assets/vehicle-2c5d967c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-b76d2976.js"),["assets/vehicle-b76d2976.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0247f03c.js"),["assets/vehicle-0247f03c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-189fc2cb.js"),["assets/vehicle-189fc2cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-8bdcc244.js"),["assets/vehicle-8bdcc244.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-6f02cb37.js"),["assets/vehicle-6f02cb37.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-84dd6d0d.js"),["assets/vehicle-84dd6d0d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-174df8ec.js"),["assets/vehicle-174df8ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-316d265a.js"),["assets/vehicle-316d265a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-0969da15.js"),["assets/vehicle-0969da15.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-a2646a86.js"),["assets/vehicle-a2646a86.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-dc63434e.js","assets/index-fc7a54eb.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-f74618cf.js"),["assets/vehicle-f74618cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; +import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-ad83e535.js";import{_ as S,C as ie}from"./index-cbcca7a0.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-c865f314.js"),["assets/vehicle-c865f314.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-2c5d967c.js"),["assets/vehicle-2c5d967c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-b76d2976.js"),["assets/vehicle-b76d2976.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0247f03c.js"),["assets/vehicle-0247f03c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-189fc2cb.js"),["assets/vehicle-189fc2cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-8bdcc244.js"),["assets/vehicle-8bdcc244.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-6f02cb37.js"),["assets/vehicle-6f02cb37.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-84dd6d0d.js"),["assets/vehicle-84dd6d0d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-174df8ec.js"),["assets/vehicle-174df8ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-316d265a.js"),["assets/vehicle-316d265a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-0969da15.js"),["assets/vehicle-0969da15.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-839ee3de.js"),["assets/vehicle-839ee3de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-dc63434e.js","assets/index-cbcca7a0.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-f74618cf.js"),["assets/vehicle-f74618cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; diff --git a/web/settings/assets/bat-815fdbb1.js b/web/settings/assets/bat-815fdbb1.js new file mode 100644 index 0000000000..c29059d65d --- /dev/null +++ b/web/settings/assets/bat-815fdbb1.js @@ -0,0 +1 @@ +import{_ as d,p as o,k as c,l as p,A as n,L as l,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/bat.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-a2c453f6.js b/web/settings/assets/counter-a2c453f6.js new file mode 100644 index 0000000000..850c055673 --- /dev/null +++ b/web/settings/assets/counter-a2c453f6.js @@ -0,0 +1 @@ +import{_ as d,p as t,k as c,l,A as n,L as p,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),u=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(u,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-91520693.js b/web/settings/assets/device-91520693.js new file mode 100644 index 0000000000..fd9910526e --- /dev/null +++ b/web/settings/assets/device-91520693.js @@ -0,0 +1 @@ +import{_ as d,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger"},v={class:"small"};function w(t,e,a,h,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Huawei SmartLogger "),m("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/index-fc7a54eb.js b/web/settings/assets/index-cbcca7a0.js similarity index 96% rename from web/settings/assets/index-fc7a54eb.js rename to web/settings/assets/index-cbcca7a0.js index b265ce3b23..522ba28e5d 100644 --- a/web/settings/assets/index-fc7a54eb.js +++ b/web/settings/assets/index-cbcca7a0.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-94ac8c48.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import{p as Ae,a as qe}from"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-jquery-f7104ff8.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-7ee068bd.js"),["assets/Status-7ee068bd.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-f2b39be5.js"),["assets/ChargeLog-f2b39be5.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b8ee6f3b.js"),["assets/Chart-b8ee6f3b.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-dd3fd71e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-f25442cf.js"),["assets/GeneralConfig-f25442cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-69f6a3bd.js"),["assets/OptionalComponents-69f6a3bd.js","assets/dynamic-import-helper-be004503.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ec57fcff.js"),["assets/GeneralChargeConfig-ec57fcff.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-676664f2.js"),["assets/InstantChargeConfig-676664f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-8ca745ae.js"),["assets/PVChargeConfig-8ca745ae.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-ef284125.js"),["assets/TimeChargeConfig-ef284125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-7c8c846d.js"),["assets/ScheduledChargeConfig-7c8c846d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-0ea898ce.js"),["assets/HardwareInstallation-0ea898ce.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-9bdba699.js"),["assets/LoadManagementConfig-9bdba699.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-8561f9a9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-470f2248.js"),["assets/ChargePointInstallation-470f2248.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-322b25b7.js"),["assets/VehicleConfig-322b25b7.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-baf072fa.js"),["assets/CloudConfig-baf072fa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-2808894f.js"),["assets/MqttBridgeConfig-2808894f.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-5c4c9ffc.js"),["assets/DebugConfig-5c4c9ffc.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-8e52ed51.js"),["assets/Support-8e52ed51.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-3159f92a.js"),["assets/LegalSettings-3159f92a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-765e2323.js"),["assets/System-765e2323.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-22142622.js"),["assets/DataManagement-22142622.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-ba263cde.js"),["assets/TestingStore-ba263cde.js","assets/OpenwbSortableList-8561f9a9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-94ac8c48.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import{p as Ae,a as qe}from"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-jquery-f7104ff8.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-b79c5fd8.js"),["assets/Status-b79c5fd8.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-be6ba638.js"),["assets/ChargeLog-be6ba638.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-372a98ba.js"),["assets/Chart-372a98ba.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-dd3fd71e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-ce149f67.js"),["assets/GeneralConfig-ce149f67.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-df4003ba.js"),["assets/OptionalComponents-df4003ba.js","assets/dynamic-import-helper-be004503.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-6358761f.js"),["assets/GeneralChargeConfig-6358761f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-1646b158.js"),["assets/InstantChargeConfig-1646b158.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-3851cc53.js"),["assets/PVChargeConfig-3851cc53.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-6ea9f121.js"),["assets/TimeChargeConfig-6ea9f121.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-ff0252cd.js"),["assets/ScheduledChargeConfig-ff0252cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-053ec617.js"),["assets/HardwareInstallation-053ec617.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-8a4d7343.js"),["assets/LoadManagementConfig-8a4d7343.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-8561f9a9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-40572ce1.js"),["assets/ChargePointInstallation-40572ce1.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-1e731d22.js"),["assets/VehicleConfig-1e731d22.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-fb035176.js"),["assets/CloudConfig-fb035176.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-9fb8ed69.js"),["assets/MqttBridgeConfig-9fb8ed69.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-0afeacb4.js"),["assets/DebugConfig-0afeacb4.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-d2984420.js"),["assets/Support-d2984420.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-c100c109.js"),["assets/LegalSettings-c100c109.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d604c488.js"),["assets/System-d604c488.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f7a0955c.js"),["assets/DataManagement-f7a0955c.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-082dc7f3.js"),["assets/TestingStore-082dc7f3.js","assets/OpenwbSortableList-8561f9a9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-aba6e6d2.js b/web/settings/assets/inverter-aba6e6d2.js new file mode 100644 index 0000000000..0025066b00 --- /dev/null +++ b/web/settings/assets/inverter-aba6e6d2.js @@ -0,0 +1 @@ +import{_ as d,p as n,k as c,l,A as o,L as p,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-a2646a86.js b/web/settings/assets/vehicle-839ee3de.js similarity index 97% rename from web/settings/assets/vehicle-a2646a86.js rename to web/settings/assets/vehicle-839ee3de.js index 3c83c1f4c8..a8837cde18 100644 --- a/web/settings/assets/vehicle-a2646a86.js +++ b/web/settings/assets/vehicle-839ee3de.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-94ac8c48.js";import{a as y}from"./vendor-axios-dc63434e.js";import{C}from"./index-fc7a54eb.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-94ac8c48.js";import{a as y}from"./vendor-axios-dc63434e.js";import{C}from"./index-cbcca7a0.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/index.html b/web/settings/index.html index bfd84ff1b0..9a10828d4e 100644 --- a/web/settings/index.html +++ b/web/settings/index.html @@ -7,7 +7,7 @@ openWB - + From e558c0c5f30f37256dc50d5d7986c4d7fe92c6e2 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 5 Sep 2023 11:32:35 +0200 Subject: [PATCH 107/121] rebuild settings --- ...eLog-be6ba638.js => ChargeLog-0999e18c.js} | 4 +- .../ChargePointInstallation-0b5b847e.js | 1 + .../ChargePointInstallation-40572ce1.js | 1 - .../{Chart-372a98ba.js => Chart-73a93152.js} | 2 +- ...ig-fb035176.js => CloudConfig-4d98a70d.js} | 2 +- ...f7a0955c.js => DataManagement-f38afa86.js} | 2 +- ...ig-0afeacb4.js => DebugConfig-8fb43a78.js} | 2 +- ...61f.js => GeneralChargeConfig-48509d36.js} | 2 +- ...-ce149f67.js => GeneralConfig-f5ba108a.js} | 2 +- .../assets/HardwareInstallation-02a629c9.js | 1 + .../assets/HardwareInstallation-053ec617.js | 1 - ...158.js => InstantChargeConfig-30b13a1a.js} | 2 +- ...-c100c109.js => LegalSettings-f8ef4166.js} | 2 +- ...43.js => LoadManagementConfig-ca6e28c3.js} | 2 +- .../assets/MqttBridgeConfig-5474c1b1.js | 1 + .../assets/MqttBridgeConfig-9fb8ed69.js | 1 - ...f9a9.js => OpenwbSortableList-ac8ac331.js} | 9 +- ...03ba.js => OptionalComponents-4617e1d7.js} | 2 +- .../assets/PVChargeConfig-3851cc53.js | 1 - .../assets/PVChargeConfig-7b09b63a.js | 1 + ...d.js => ScheduledChargeConfig-5a41484d.js} | 2 +- ...{Status-b79c5fd8.js => Status-954adcf7.js} | 2 +- web/settings/assets/Support-bee6b474.js | 1 + web/settings/assets/Support-d2984420.js | 1 - ...{System-d604c488.js => System-c57d9a74.js} | 2 +- ...e-082dc7f3.js => TestingStore-1048cc3b.js} | 2 +- ...a9f121.js => TimeChargeConfig-3a55662f.js} | 2 +- ...-1e731d22.js => VehicleConfig-2663db55.js} | 2 +- ...d-f1ce5010.js => backup_cloud-6519f98a.js} | 2 +- ...d-e0f3013d.js => backup_cloud-e0e3e868.js} | 2 +- .../{bat-2f8005f2.js => bat-0e028baf.js} | 2 +- .../{bat-904c9172.js => bat-0eeeca9c.js} | 2 +- .../{bat-3980db8f.js => bat-17d0ebe7.js} | 2 +- .../{bat-6fcf71db.js => bat-22a2eeff.js} | 2 +- .../{bat-f9178e22.js => bat-268a0365.js} | 2 +- .../{bat-3d2b7acc.js => bat-27edc2dc.js} | 2 +- .../{bat-d1af67af.js => bat-39b4c6ba.js} | 2 +- .../{bat-212960fc.js => bat-3af1a10a.js} | 2 +- .../{bat-ac5ee104.js => bat-3f0ca072.js} | 2 +- .../{bat-ccba567b.js => bat-46c566c9.js} | 2 +- .../{bat-8af3358d.js => bat-4b1f210f.js} | 2 +- .../{bat-80bc8859.js => bat-514861df.js} | 2 +- .../{bat-12170e78.js => bat-595642c8.js} | 2 +- .../{bat-815fdbb1.js => bat-5b22e35d.js} | 2 +- .../{bat-180a64ef.js => bat-6c62c4f0.js} | 2 +- .../{bat-3dbfaf1b.js => bat-7500700f.js} | 2 +- .../{bat-fd9f4fe4.js => bat-874f748e.js} | 2 +- .../{bat-f30697e9.js => bat-8c7d349e.js} | 2 +- .../{bat-9ff121c5.js => bat-93524d1b.js} | 2 +- .../{bat-f75dd877.js => bat-9894d537.js} | 2 +- .../{bat-ba791935.js => bat-aaf46348.js} | 2 +- .../{bat-b91f4e63.js => bat-b2de0630.js} | 2 +- .../{bat-3e58123d.js => bat-bbb09227.js} | 2 +- .../{bat-4b5ddf83.js => bat-ce4aa848.js} | 2 +- .../{bat-4320b5cc.js => bat-d04d3f5b.js} | 2 +- .../{bat-a92f022e.js => bat-d94203e2.js} | 2 +- .../{bat-557284f3.js => bat-df8e198a.js} | 2 +- .../{bat-cbc92919.js => bat-e62d7b1e.js} | 2 +- .../{bat-cb226603.js => bat-e8cdd332.js} | 2 +- .../{bat-45b559ec.js => bat-ec698ff1.js} | 2 +- .../{bat-e1949609.js => bat-f2ff4071.js} | 2 +- .../{bat-61bcf2f8.js => bat-f963a986.js} | 2 +- ...at_api-e58852af.js => bat_api-bbcd36bc.js} | 2 +- ...bus-260d9b94.js => bat_modbus-7b1ae23d.js} | 2 +- ...7c3655.js => bat_smart_energy-5d29a479.js} | 2 +- ...nt-10f32a1a.js => chargePoint-47a32a91.js} | 2 +- ...nt-a56bc604.js => chargePoint-75b0bdf9.js} | 2 +- ...nt-80e648c2.js => chargePoint-792da849.js} | 2 +- ...nt-4a124bb9.js => chargePoint-83d3ee27.js} | 2 +- ...nt-07057692.js => chargePoint-9ab109c4.js} | 2 +- ...nt-7200a105.js => chargePoint-9f9283b5.js} | 2 +- web/settings/assets/commands-516069c3.js | 1 - web/settings/assets/commands-dfab65eb.js | 1 + ...ounter-b30c239d.js => counter-00e8bfb9.js} | 2 +- ...ounter-82a793a2.js => counter-0524aa8c.js} | 2 +- ...ounter-7b85a5b2.js => counter-08f8d2f2.js} | 2 +- ...ounter-f322702a.js => counter-09b39d2d.js} | 2 +- ...ounter-6369ff43.js => counter-0abbb386.js} | 2 +- ...ounter-d335a007.js => counter-0d09b23e.js} | 2 +- ...ounter-fb6b0fb9.js => counter-107b4963.js} | 2 +- ...ounter-816c921e.js => counter-1516cbf4.js} | 2 +- ...ounter-60655200.js => counter-16bcb8fc.js} | 2 +- ...ounter-7a7be3d3.js => counter-1ddce36f.js} | 2 +- ...ounter-af942561.js => counter-2524acf0.js} | 2 +- ...ounter-70b9e720.js => counter-25d1e220.js} | 2 +- ...ounter-2a189926.js => counter-25dcea49.js} | 2 +- ...ounter-4dc3cbd5.js => counter-2fda105e.js} | 2 +- ...ounter-b2081459.js => counter-32007d3e.js} | 2 +- ...ounter-8d4f402a.js => counter-45ecd9ff.js} | 2 +- ...ounter-21f55471.js => counter-4fb4e495.js} | 2 +- ...ounter-da58c807.js => counter-57c9333b.js} | 2 +- ...ounter-73783603.js => counter-5cb15a92.js} | 2 +- ...ounter-a2c453f6.js => counter-6247163c.js} | 2 +- ...ounter-00ec4a93.js => counter-6264518e.js} | 2 +- ...ounter-2365410a.js => counter-71a69a0f.js} | 2 +- ...ounter-6d0620dd.js => counter-75ce0061.js} | 2 +- ...ounter-d03b355d.js => counter-83354bca.js} | 2 +- ...ounter-478d9577.js => counter-9513e8db.js} | 2 +- ...ounter-fbf1efa1.js => counter-969297fa.js} | 2 +- ...ounter-f56715cd.js => counter-9a41f79b.js} | 2 +- ...ounter-1905ec77.js => counter-9a77fa00.js} | 2 +- ...ounter-eab5abf7.js => counter-9c24dc5c.js} | 2 +- ...ounter-c0f3f4ac.js => counter-a13ecb51.js} | 2 +- ...ounter-9097a073.js => counter-a3e434aa.js} | 2 +- ...ounter-18fd3233.js => counter-b09d3ede.js} | 2 +- ...ounter-ad208981.js => counter-b4f1d52c.js} | 2 +- ...ounter-46b207f3.js => counter-b804ace4.js} | 2 +- ...ounter-3df9b0e7.js => counter-c9dc9c81.js} | 2 +- ...ounter-57df9eec.js => counter-cd290a98.js} | 2 +- ...ounter-2e4fa5c2.js => counter-cf4834fd.js} | 2 +- ...ounter-fcc6cfc8.js => counter-d1489ce8.js} | 2 +- ...ounter-77841659.js => counter-e15f2c06.js} | 2 +- ...ounter-46a15c2b.js => counter-e3807695.js} | 2 +- ...ounter-df3e561f.js => counter-e7921fa4.js} | 2 +- ...ounter-5b0b9661.js => counter-ed28bc4b.js} | 2 +- ...ounter-1c5a2313.js => counter-fca60eb6.js} | 2 +- ..._s0-0068172e.js => counter_s0-ba7ae169.js} | 2 +- ..._sm-802e0059.js => counter_sm-ccecb663.js} | 2 +- ...{device-9114b4f4.js => device-0be142e9.js} | 2 +- ...{device-3c66abac.js => device-0ec37631.js} | 2 +- ...{device-c49a0ced.js => device-1034f28e.js} | 2 +- ...{device-0c072e3b.js => device-11080b2d.js} | 2 +- ...{device-c5eaae23.js => device-1548812a.js} | 2 +- ...{device-5442f3f8.js => device-1a05e97a.js} | 2 +- ...{device-2b476100.js => device-246d5e43.js} | 2 +- ...{device-23fbc413.js => device-28066804.js} | 2 +- ...{device-84c0ab33.js => device-3330c205.js} | 2 +- ...{device-060ee4fd.js => device-3711a41a.js} | 2 +- ...{device-c553c1ee.js => device-3ddc3e24.js} | 2 +- ...{device-91520693.js => device-3f5084e0.js} | 2 +- ...{device-7fbce287.js => device-3fe4b5f3.js} | 2 +- ...{device-5c559131.js => device-4005e628.js} | 2 +- ...{device-cdede991.js => device-49750792.js} | 2 +- ...{device-94f0ef9b.js => device-4a98b784.js} | 2 +- ...{device-eed5fccd.js => device-4c8d99b2.js} | 2 +- ...{device-03a0ce90.js => device-509acf7c.js} | 2 +- ...{device-9f8cfcd3.js => device-52389f33.js} | 2 +- ...{device-efcbb283.js => device-5b3585a3.js} | 2 +- ...{device-9f1d6204.js => device-6422d305.js} | 2 +- ...{device-ae9d7f6e.js => device-69672183.js} | 2 +- ...{device-d971bed6.js => device-72498906.js} | 2 +- ...{device-11808744.js => device-7e999eff.js} | 2 +- ...{device-554ac70d.js => device-81934251.js} | 2 +- ...{device-2fc1a957.js => device-8271ebf3.js} | 2 +- ...{device-34d66ae0.js => device-84570e67.js} | 2 +- ...{device-e88cb248.js => device-8715b56d.js} | 2 +- ...{device-10d2c4c1.js => device-895b9b05.js} | 2 +- ...{device-48b82d13.js => device-9444169d.js} | 2 +- ...{device-71f6eb4f.js => device-95bb6ed4.js} | 2 +- ...{device-ff4b5125.js => device-a2d2f22a.js} | 2 +- ...{device-e2dad607.js => device-a394c36e.js} | 2 +- ...{device-f186e4bf.js => device-a81f5544.js} | 2 +- ...{device-1ebd188c.js => device-a88fff7e.js} | 2 +- ...{device-24f0a9e0.js => device-ac3bc5b3.js} | 2 +- ...{device-f581669c.js => device-b1434489.js} | 2 +- ...{device-2a7fcdcd.js => device-bf858f4d.js} | 2 +- ...{device-7700d0d1.js => device-bfd97b22.js} | 2 +- ...{device-c0377afe.js => device-c365f5a7.js} | 2 +- ...{device-333a1847.js => device-c7f104f4.js} | 2 +- ...{device-44e40f8a.js => device-cc75d571.js} | 2 +- ...{device-f3520fbc.js => device-d3107147.js} | 2 +- ...{device-6223df3d.js => device-d4d23cd7.js} | 2 +- ...{device-ae65393a.js => device-d57c20ac.js} | 2 +- ...{device-b59b9c77.js => device-d6905669.js} | 2 +- ...{device-eded82a1.js => device-e304fcca.js} | 2 +- ...{device-9c25dea2.js => device-e41e1249.js} | 2 +- ...{device-b04bd256.js => device-e5846fb7.js} | 2 +- ...{device-d5aedcd9.js => device-e67da7c1.js} | 2 +- ...{device-68cea660.js => device-e690bc67.js} | 2 +- ...{device-fcd34186.js => device-e8e7a237.js} | 2 +- ...{device-76b564cb.js => device-e95c0504.js} | 2 +- ...{device-5e36d94b.js => device-e97ebded.js} | 2 +- ...{device-368b885c.js => device-eb39e5e3.js} | 2 +- ...{device-c7a69fb7.js => device-f356c73d.js} | 2 +- ...{device-736742cc.js => device-f422a199.js} | 2 +- ...e-af0ce411.js => displayTheme-35595a93.js} | 2 +- ...c5286.js => external_inverter-21044b75.js} | 2 +- ...acbf1.js => external_inverter-5c208b04.js} | 2 +- ...9c79d.js => external_inverter-af9b2b79.js} | 2 +- web/settings/assets/index-cbcca7a0.js | 1 - web/settings/assets/index-f08a7306.js | 1 + ...erter-d63a850e.js => inverter-08367390.js} | 2 +- ...erter-fb25d42c.js => inverter-0fd0b224.js} | 2 +- ...erter-d5ca1a80.js => inverter-135f51a3.js} | 2 +- ...erter-735276eb.js => inverter-15408a2b.js} | 2 +- ...erter-c0320c10.js => inverter-1b75ddba.js} | 2 +- ...erter-0a8a02aa.js => inverter-1c1592c9.js} | 2 +- ...erter-d7dcc616.js => inverter-1f399f0d.js} | 2 +- ...erter-57f7e67c.js => inverter-267fccce.js} | 2 +- ...erter-3b84e31d.js => inverter-326280ce.js} | 2 +- ...erter-4ed4378e.js => inverter-3d45d55a.js} | 2 +- ...erter-f900cffa.js => inverter-3d819a6f.js} | 2 +- ...erter-ae905211.js => inverter-3fdb1742.js} | 2 +- ...erter-e383405a.js => inverter-40f5b027.js} | 2 +- ...erter-89a115de.js => inverter-47bedabe.js} | 2 +- ...erter-aba6e6d2.js => inverter-4c98a82a.js} | 2 +- ...erter-66b1df21.js => inverter-508f415f.js} | 2 +- ...erter-da627431.js => inverter-5b0c8748.js} | 2 +- ...erter-a4f4de69.js => inverter-5cfbe42d.js} | 2 +- ...erter-983f9bf4.js => inverter-5d68f662.js} | 2 +- ...erter-6afece8c.js => inverter-6ce20d89.js} | 2 +- ...erter-b33414cf.js => inverter-7f5cbd1f.js} | 2 +- ...erter-be294b52.js => inverter-86ab0f22.js} | 2 +- ...erter-8ebf65c2.js => inverter-89491124.js} | 2 +- ...erter-b6d89f35.js => inverter-8c6dadd9.js} | 2 +- ...erter-42feff92.js => inverter-8ca711bc.js} | 2 +- ...erter-973593c5.js => inverter-90b5924d.js} | 2 +- ...erter-bce80bd5.js => inverter-92eb5977.js} | 2 +- ...erter-91521524.js => inverter-96db7f1d.js} | 2 +- ...erter-ba59974f.js => inverter-9962a05f.js} | 2 +- ...erter-98ed6e35.js => inverter-a028ca0c.js} | 2 +- ...erter-09d68c12.js => inverter-a4741525.js} | 2 +- ...erter-2b727919.js => inverter-a532223b.js} | 2 +- ...erter-3e855a0b.js => inverter-a6e26156.js} | 2 +- ...erter-5500500b.js => inverter-af852271.js} | 2 +- ...erter-39afe3b5.js => inverter-b1415371.js} | 2 +- ...erter-1a27b5a2.js => inverter-b959eebb.js} | 2 +- ...erter-35d50734.js => inverter-be6aac70.js} | 2 +- ...erter-bc54ef72.js => inverter-c08d4e42.js} | 2 +- ...erter-b35ac71f.js => inverter-c90183ae.js} | 2 +- ...erter-0daad30f.js => inverter-d02eb41e.js} | 2 +- ...erter-3df75149.js => inverter-d2ccf27d.js} | 2 +- ...erter-22be4ed9.js => inverter-e3d31521.js} | 2 +- ...erter-f266f49d.js => inverter-e5461fd3.js} | 2 +- ...erter-b47e8b65.js => inverter-eef610e6.js} | 2 +- ...erter-f0ad6bcd.js => inverter-f7d9af29.js} | 2 +- ...erter-3515d2b5.js => inverter-f9807fb1.js} | 2 +- ...ehicle-189fc2cb.js => vehicle-0e30b50e.js} | 2 +- ...ehicle-0247f03c.js => vehicle-0ea9ae58.js} | 2 +- ...ehicle-c865f314.js => vehicle-11ffdccd.js} | 2 +- ...ehicle-b76d2976.js => vehicle-344c6660.js} | 2 +- ...ehicle-84dd6d0d.js => vehicle-34ce6cc8.js} | 2 +- ...ehicle-f74618cf.js => vehicle-677f2094.js} | 2 +- ...ehicle-2c5d967c.js => vehicle-82a4990a.js} | 2 +- web/settings/assets/vehicle-839ee3de.js | 1 - ...ehicle-6f02cb37.js => vehicle-8cbf750d.js} | 2 +- ...ehicle-174df8ec.js => vehicle-c74f02d0.js} | 2 +- ...ehicle-0969da15.js => vehicle-cbd74ad8.js} | 2 +- web/settings/assets/vehicle-e7320818.js | 1 + ...ehicle-8bdcc244.js => vehicle-ebf7e590.js} | 2 +- ...ehicle-316d265a.js => vehicle-ef079f93.js} | 2 +- web/settings/assets/vendor-20bb207d.js | 100 ++++++++++++++++++ web/settings/assets/vendor-94ac8c48.js | 100 ------------------ ...s-dc63434e.js => vendor-axios-13ef03ae.js} | 2 +- ...620114.js => vendor-bootstrap-d275de6c.js} | 2 +- ...dd3fd71e.js => vendor-chartjs-93103a11.js} | 2 +- ...e535.js => vendor-fortawesome-838df0c9.js} | 2 +- ...-f7104ff8.js => vendor-jquery-89b63fca.js} | 2 +- ...23470.js => vendor-sortablejs-ad1d2cc8.js} | 2 +- web/settings/index.html | 14 +-- 250 files changed, 348 insertions(+), 353 deletions(-) rename web/settings/assets/{ChargeLog-be6ba638.js => ChargeLog-0999e18c.js} (51%) create mode 100644 web/settings/assets/ChargePointInstallation-0b5b847e.js delete mode 100644 web/settings/assets/ChargePointInstallation-40572ce1.js rename web/settings/assets/{Chart-372a98ba.js => Chart-73a93152.js} (97%) rename web/settings/assets/{CloudConfig-fb035176.js => CloudConfig-4d98a70d.js} (96%) rename web/settings/assets/{DataManagement-f7a0955c.js => DataManagement-f38afa86.js} (96%) rename web/settings/assets/{DebugConfig-0afeacb4.js => DebugConfig-8fb43a78.js} (92%) rename web/settings/assets/{GeneralChargeConfig-6358761f.js => GeneralChargeConfig-48509d36.js} (87%) rename web/settings/assets/{GeneralConfig-ce149f67.js => GeneralConfig-f5ba108a.js} (97%) create mode 100644 web/settings/assets/HardwareInstallation-02a629c9.js delete mode 100644 web/settings/assets/HardwareInstallation-053ec617.js rename web/settings/assets/{InstantChargeConfig-1646b158.js => InstantChargeConfig-30b13a1a.js} (84%) rename web/settings/assets/{LegalSettings-c100c109.js => LegalSettings-f8ef4166.js} (84%) rename web/settings/assets/{LoadManagementConfig-8a4d7343.js => LoadManagementConfig-ca6e28c3.js} (95%) create mode 100644 web/settings/assets/MqttBridgeConfig-5474c1b1.js delete mode 100644 web/settings/assets/MqttBridgeConfig-9fb8ed69.js rename web/settings/assets/{OpenwbSortableList-8561f9a9.js => OpenwbSortableList-ac8ac331.js} (52%) rename web/settings/assets/{OptionalComponents-df4003ba.js => OptionalComponents-4617e1d7.js} (98%) delete mode 100644 web/settings/assets/PVChargeConfig-3851cc53.js create mode 100644 web/settings/assets/PVChargeConfig-7b09b63a.js rename web/settings/assets/{ScheduledChargeConfig-ff0252cd.js => ScheduledChargeConfig-5a41484d.js} (85%) rename web/settings/assets/{Status-b79c5fd8.js => Status-954adcf7.js} (98%) create mode 100644 web/settings/assets/Support-bee6b474.js delete mode 100644 web/settings/assets/Support-d2984420.js rename web/settings/assets/{System-d604c488.js => System-c57d9a74.js} (96%) rename web/settings/assets/{TestingStore-082dc7f3.js => TestingStore-1048cc3b.js} (95%) rename web/settings/assets/{TimeChargeConfig-6ea9f121.js => TimeChargeConfig-3a55662f.js} (84%) rename web/settings/assets/{VehicleConfig-1e731d22.js => VehicleConfig-2663db55.js} (94%) rename web/settings/assets/{backup_cloud-f1ce5010.js => backup_cloud-6519f98a.js} (96%) rename web/settings/assets/{backup_cloud-e0f3013d.js => backup_cloud-e0e3e868.js} (92%) rename web/settings/assets/{bat-2f8005f2.js => bat-0e028baf.js} (96%) rename web/settings/assets/{bat-904c9172.js => bat-0eeeca9c.js} (85%) rename web/settings/assets/{bat-3980db8f.js => bat-17d0ebe7.js} (86%) rename web/settings/assets/{bat-6fcf71db.js => bat-22a2eeff.js} (86%) rename web/settings/assets/{bat-f9178e22.js => bat-268a0365.js} (94%) rename web/settings/assets/{bat-3d2b7acc.js => bat-27edc2dc.js} (88%) rename web/settings/assets/{bat-d1af67af.js => bat-39b4c6ba.js} (85%) rename web/settings/assets/{bat-212960fc.js => bat-3af1a10a.js} (94%) rename web/settings/assets/{bat-ac5ee104.js => bat-3f0ca072.js} (87%) rename web/settings/assets/{bat-ccba567b.js => bat-46c566c9.js} (86%) rename web/settings/assets/{bat-8af3358d.js => bat-4b1f210f.js} (86%) rename web/settings/assets/{bat-80bc8859.js => bat-514861df.js} (87%) rename web/settings/assets/{bat-12170e78.js => bat-595642c8.js} (86%) rename web/settings/assets/{bat-815fdbb1.js => bat-5b22e35d.js} (88%) rename web/settings/assets/{bat-180a64ef.js => bat-6c62c4f0.js} (87%) rename web/settings/assets/{bat-3dbfaf1b.js => bat-7500700f.js} (86%) rename web/settings/assets/{bat-fd9f4fe4.js => bat-874f748e.js} (86%) rename web/settings/assets/{bat-f30697e9.js => bat-8c7d349e.js} (86%) rename web/settings/assets/{bat-9ff121c5.js => bat-93524d1b.js} (86%) rename web/settings/assets/{bat-f75dd877.js => bat-9894d537.js} (86%) rename web/settings/assets/{bat-ba791935.js => bat-aaf46348.js} (90%) rename web/settings/assets/{bat-b91f4e63.js => bat-b2de0630.js} (90%) rename web/settings/assets/{bat-3e58123d.js => bat-bbb09227.js} (88%) rename web/settings/assets/{bat-4b5ddf83.js => bat-ce4aa848.js} (86%) rename web/settings/assets/{bat-4320b5cc.js => bat-d04d3f5b.js} (85%) rename web/settings/assets/{bat-a92f022e.js => bat-d94203e2.js} (86%) rename web/settings/assets/{bat-557284f3.js => bat-df8e198a.js} (86%) rename web/settings/assets/{bat-cbc92919.js => bat-e62d7b1e.js} (86%) rename web/settings/assets/{bat-cb226603.js => bat-e8cdd332.js} (86%) rename web/settings/assets/{bat-45b559ec.js => bat-ec698ff1.js} (93%) rename web/settings/assets/{bat-e1949609.js => bat-f2ff4071.js} (93%) rename web/settings/assets/{bat-61bcf2f8.js => bat-f963a986.js} (85%) rename web/settings/assets/{bat_api-e58852af.js => bat_api-bbcd36bc.js} (86%) rename web/settings/assets/{bat_modbus-260d9b94.js => bat_modbus-7b1ae23d.js} (86%) rename web/settings/assets/{bat_smart_energy-817c3655.js => bat_smart_energy-5d29a479.js} (87%) rename web/settings/assets/{chargePoint-10f32a1a.js => chargePoint-47a32a91.js} (94%) rename web/settings/assets/{chargePoint-a56bc604.js => chargePoint-75b0bdf9.js} (92%) rename web/settings/assets/{chargePoint-80e648c2.js => chargePoint-792da849.js} (84%) rename web/settings/assets/{chargePoint-4a124bb9.js => chargePoint-83d3ee27.js} (95%) rename web/settings/assets/{chargePoint-07057692.js => chargePoint-9ab109c4.js} (95%) rename web/settings/assets/{chargePoint-7200a105.js => chargePoint-9f9283b5.js} (98%) delete mode 100644 web/settings/assets/commands-516069c3.js create mode 100644 web/settings/assets/commands-dfab65eb.js rename web/settings/assets/{counter-b30c239d.js => counter-00e8bfb9.js} (86%) rename web/settings/assets/{counter-82a793a2.js => counter-0524aa8c.js} (86%) rename web/settings/assets/{counter-7b85a5b2.js => counter-08f8d2f2.js} (86%) rename web/settings/assets/{counter-f322702a.js => counter-09b39d2d.js} (86%) rename web/settings/assets/{counter-6369ff43.js => counter-0abbb386.js} (90%) rename web/settings/assets/{counter-d335a007.js => counter-0d09b23e.js} (90%) rename web/settings/assets/{counter-fb6b0fb9.js => counter-107b4963.js} (86%) rename web/settings/assets/{counter-816c921e.js => counter-1516cbf4.js} (96%) rename web/settings/assets/{counter-60655200.js => counter-16bcb8fc.js} (86%) rename web/settings/assets/{counter-7a7be3d3.js => counter-1ddce36f.js} (86%) rename web/settings/assets/{counter-af942561.js => counter-2524acf0.js} (88%) rename web/settings/assets/{counter-70b9e720.js => counter-25d1e220.js} (89%) rename web/settings/assets/{counter-2a189926.js => counter-25dcea49.js} (87%) rename web/settings/assets/{counter-4dc3cbd5.js => counter-2fda105e.js} (93%) rename web/settings/assets/{counter-b2081459.js => counter-32007d3e.js} (86%) rename web/settings/assets/{counter-8d4f402a.js => counter-45ecd9ff.js} (86%) rename web/settings/assets/{counter-21f55471.js => counter-4fb4e495.js} (88%) rename web/settings/assets/{counter-da58c807.js => counter-57c9333b.js} (86%) rename web/settings/assets/{counter-73783603.js => counter-5cb15a92.js} (86%) rename web/settings/assets/{counter-a2c453f6.js => counter-6247163c.js} (94%) rename web/settings/assets/{counter-00ec4a93.js => counter-6264518e.js} (92%) rename web/settings/assets/{counter-2365410a.js => counter-71a69a0f.js} (91%) rename web/settings/assets/{counter-6d0620dd.js => counter-75ce0061.js} (97%) rename web/settings/assets/{counter-d03b355d.js => counter-83354bca.js} (85%) rename web/settings/assets/{counter-478d9577.js => counter-9513e8db.js} (90%) rename web/settings/assets/{counter-fbf1efa1.js => counter-969297fa.js} (85%) rename web/settings/assets/{counter-f56715cd.js => counter-9a41f79b.js} (89%) rename web/settings/assets/{counter-1905ec77.js => counter-9a77fa00.js} (90%) rename web/settings/assets/{counter-eab5abf7.js => counter-9c24dc5c.js} (87%) rename web/settings/assets/{counter-c0f3f4ac.js => counter-a13ecb51.js} (90%) rename web/settings/assets/{counter-9097a073.js => counter-a3e434aa.js} (86%) rename web/settings/assets/{counter-18fd3233.js => counter-b09d3ede.js} (90%) rename web/settings/assets/{counter-ad208981.js => counter-b4f1d52c.js} (85%) rename web/settings/assets/{counter-46b207f3.js => counter-b804ace4.js} (91%) rename web/settings/assets/{counter-3df9b0e7.js => counter-c9dc9c81.js} (88%) rename web/settings/assets/{counter-57df9eec.js => counter-cd290a98.js} (86%) rename web/settings/assets/{counter-2e4fa5c2.js => counter-cf4834fd.js} (86%) rename web/settings/assets/{counter-fcc6cfc8.js => counter-d1489ce8.js} (86%) rename web/settings/assets/{counter-77841659.js => counter-e15f2c06.js} (86%) rename web/settings/assets/{counter-46a15c2b.js => counter-e3807695.js} (96%) rename web/settings/assets/{counter-df3e561f.js => counter-e7921fa4.js} (87%) rename web/settings/assets/{counter-5b0b9661.js => counter-ed28bc4b.js} (88%) rename web/settings/assets/{counter-1c5a2313.js => counter-fca60eb6.js} (86%) rename web/settings/assets/{counter_s0-0068172e.js => counter_s0-ba7ae169.js} (86%) rename web/settings/assets/{counter_sm-802e0059.js => counter_sm-ccecb663.js} (96%) rename web/settings/assets/{device-9114b4f4.js => device-0be142e9.js} (95%) rename web/settings/assets/{device-3c66abac.js => device-0ec37631.js} (89%) rename web/settings/assets/{device-c49a0ced.js => device-1034f28e.js} (94%) rename web/settings/assets/{device-0c072e3b.js => device-11080b2d.js} (91%) rename web/settings/assets/{device-c5eaae23.js => device-1548812a.js} (89%) rename web/settings/assets/{device-5442f3f8.js => device-1a05e97a.js} (89%) rename web/settings/assets/{device-2b476100.js => device-246d5e43.js} (87%) rename web/settings/assets/{device-23fbc413.js => device-28066804.js} (90%) rename web/settings/assets/{device-84c0ab33.js => device-3330c205.js} (90%) rename web/settings/assets/{device-060ee4fd.js => device-3711a41a.js} (85%) rename web/settings/assets/{device-c553c1ee.js => device-3ddc3e24.js} (87%) rename web/settings/assets/{device-91520693.js => device-3f5084e0.js} (87%) rename web/settings/assets/{device-7fbce287.js => device-3fe4b5f3.js} (86%) rename web/settings/assets/{device-5c559131.js => device-4005e628.js} (85%) rename web/settings/assets/{device-cdede991.js => device-49750792.js} (88%) rename web/settings/assets/{device-94f0ef9b.js => device-4a98b784.js} (88%) rename web/settings/assets/{device-eed5fccd.js => device-4c8d99b2.js} (90%) rename web/settings/assets/{device-03a0ce90.js => device-509acf7c.js} (92%) rename web/settings/assets/{device-9f8cfcd3.js => device-52389f33.js} (87%) rename web/settings/assets/{device-efcbb283.js => device-5b3585a3.js} (91%) rename web/settings/assets/{device-9f1d6204.js => device-6422d305.js} (89%) rename web/settings/assets/{device-ae9d7f6e.js => device-69672183.js} (92%) rename web/settings/assets/{device-d971bed6.js => device-72498906.js} (87%) rename web/settings/assets/{device-11808744.js => device-7e999eff.js} (89%) rename web/settings/assets/{device-554ac70d.js => device-81934251.js} (85%) rename web/settings/assets/{device-2fc1a957.js => device-8271ebf3.js} (89%) rename web/settings/assets/{device-34d66ae0.js => device-84570e67.js} (87%) rename web/settings/assets/{device-e88cb248.js => device-8715b56d.js} (89%) rename web/settings/assets/{device-10d2c4c1.js => device-895b9b05.js} (87%) rename web/settings/assets/{device-48b82d13.js => device-9444169d.js} (87%) rename web/settings/assets/{device-71f6eb4f.js => device-95bb6ed4.js} (89%) rename web/settings/assets/{device-ff4b5125.js => device-a2d2f22a.js} (87%) rename web/settings/assets/{device-e2dad607.js => device-a394c36e.js} (87%) rename web/settings/assets/{device-f186e4bf.js => device-a81f5544.js} (89%) rename web/settings/assets/{device-1ebd188c.js => device-a88fff7e.js} (85%) rename web/settings/assets/{device-24f0a9e0.js => device-ac3bc5b3.js} (90%) rename web/settings/assets/{device-f581669c.js => device-b1434489.js} (88%) rename web/settings/assets/{device-2a7fcdcd.js => device-bf858f4d.js} (88%) rename web/settings/assets/{device-7700d0d1.js => device-bfd97b22.js} (91%) rename web/settings/assets/{device-c0377afe.js => device-c365f5a7.js} (87%) rename web/settings/assets/{device-333a1847.js => device-c7f104f4.js} (91%) rename web/settings/assets/{device-44e40f8a.js => device-cc75d571.js} (90%) rename web/settings/assets/{device-f3520fbc.js => device-d3107147.js} (89%) rename web/settings/assets/{device-6223df3d.js => device-d4d23cd7.js} (87%) rename web/settings/assets/{device-ae65393a.js => device-d57c20ac.js} (89%) rename web/settings/assets/{device-b59b9c77.js => device-d6905669.js} (87%) rename web/settings/assets/{device-eded82a1.js => device-e304fcca.js} (87%) rename web/settings/assets/{device-9c25dea2.js => device-e41e1249.js} (89%) rename web/settings/assets/{device-b04bd256.js => device-e5846fb7.js} (89%) rename web/settings/assets/{device-d5aedcd9.js => device-e67da7c1.js} (87%) rename web/settings/assets/{device-68cea660.js => device-e690bc67.js} (85%) rename web/settings/assets/{device-fcd34186.js => device-e8e7a237.js} (90%) rename web/settings/assets/{device-76b564cb.js => device-e95c0504.js} (95%) rename web/settings/assets/{device-5e36d94b.js => device-e97ebded.js} (87%) rename web/settings/assets/{device-368b885c.js => device-eb39e5e3.js} (96%) rename web/settings/assets/{device-c7a69fb7.js => device-f356c73d.js} (86%) rename web/settings/assets/{device-736742cc.js => device-f422a199.js} (87%) rename web/settings/assets/{displayTheme-af0ce411.js => displayTheme-35595a93.js} (97%) rename web/settings/assets/{external_inverter-c6cc5286.js => external_inverter-21044b75.js} (86%) rename web/settings/assets/{external_inverter-debacbf1.js => external_inverter-5c208b04.js} (86%) rename web/settings/assets/{external_inverter-4989c79d.js => external_inverter-af9b2b79.js} (92%) delete mode 100644 web/settings/assets/index-cbcca7a0.js create mode 100644 web/settings/assets/index-f08a7306.js rename web/settings/assets/{inverter-d63a850e.js => inverter-08367390.js} (86%) rename web/settings/assets/{inverter-fb25d42c.js => inverter-0fd0b224.js} (86%) rename web/settings/assets/{inverter-d5ca1a80.js => inverter-135f51a3.js} (90%) rename web/settings/assets/{inverter-735276eb.js => inverter-15408a2b.js} (94%) rename web/settings/assets/{inverter-c0320c10.js => inverter-1b75ddba.js} (88%) rename web/settings/assets/{inverter-0a8a02aa.js => inverter-1c1592c9.js} (86%) rename web/settings/assets/{inverter-d7dcc616.js => inverter-1f399f0d.js} (94%) rename web/settings/assets/{inverter-57f7e67c.js => inverter-267fccce.js} (86%) rename web/settings/assets/{inverter-3b84e31d.js => inverter-326280ce.js} (86%) rename web/settings/assets/{inverter-4ed4378e.js => inverter-3d45d55a.js} (91%) rename web/settings/assets/{inverter-f900cffa.js => inverter-3d819a6f.js} (86%) rename web/settings/assets/{inverter-ae905211.js => inverter-3fdb1742.js} (86%) rename web/settings/assets/{inverter-e383405a.js => inverter-40f5b027.js} (93%) rename web/settings/assets/{inverter-89a115de.js => inverter-47bedabe.js} (86%) rename web/settings/assets/{inverter-aba6e6d2.js => inverter-4c98a82a.js} (94%) rename web/settings/assets/{inverter-66b1df21.js => inverter-508f415f.js} (89%) rename web/settings/assets/{inverter-da627431.js => inverter-5b0c8748.js} (93%) rename web/settings/assets/{inverter-a4f4de69.js => inverter-5cfbe42d.js} (86%) rename web/settings/assets/{inverter-983f9bf4.js => inverter-5d68f662.js} (93%) rename web/settings/assets/{inverter-6afece8c.js => inverter-6ce20d89.js} (90%) rename web/settings/assets/{inverter-b33414cf.js => inverter-7f5cbd1f.js} (89%) rename web/settings/assets/{inverter-be294b52.js => inverter-86ab0f22.js} (86%) rename web/settings/assets/{inverter-8ebf65c2.js => inverter-89491124.js} (96%) rename web/settings/assets/{inverter-b6d89f35.js => inverter-8c6dadd9.js} (86%) rename web/settings/assets/{inverter-42feff92.js => inverter-8ca711bc.js} (86%) rename web/settings/assets/{inverter-973593c5.js => inverter-90b5924d.js} (86%) rename web/settings/assets/{inverter-bce80bd5.js => inverter-92eb5977.js} (86%) rename web/settings/assets/{inverter-91521524.js => inverter-96db7f1d.js} (90%) rename web/settings/assets/{inverter-ba59974f.js => inverter-9962a05f.js} (95%) rename web/settings/assets/{inverter-98ed6e35.js => inverter-a028ca0c.js} (88%) rename web/settings/assets/{inverter-09d68c12.js => inverter-a4741525.js} (89%) rename web/settings/assets/{inverter-2b727919.js => inverter-a532223b.js} (93%) rename web/settings/assets/{inverter-3e855a0b.js => inverter-a6e26156.js} (86%) rename web/settings/assets/{inverter-5500500b.js => inverter-af852271.js} (87%) rename web/settings/assets/{inverter-39afe3b5.js => inverter-b1415371.js} (86%) rename web/settings/assets/{inverter-1a27b5a2.js => inverter-b959eebb.js} (86%) rename web/settings/assets/{inverter-35d50734.js => inverter-be6aac70.js} (86%) rename web/settings/assets/{inverter-bc54ef72.js => inverter-c08d4e42.js} (86%) rename web/settings/assets/{inverter-b35ac71f.js => inverter-c90183ae.js} (88%) rename web/settings/assets/{inverter-0daad30f.js => inverter-d02eb41e.js} (90%) rename web/settings/assets/{inverter-3df75149.js => inverter-d2ccf27d.js} (91%) rename web/settings/assets/{inverter-22be4ed9.js => inverter-e3d31521.js} (93%) rename web/settings/assets/{inverter-f266f49d.js => inverter-e5461fd3.js} (86%) rename web/settings/assets/{inverter-b47e8b65.js => inverter-eef610e6.js} (86%) rename web/settings/assets/{inverter-f0ad6bcd.js => inverter-f7d9af29.js} (86%) rename web/settings/assets/{inverter-3515d2b5.js => inverter-f9807fb1.js} (93%) rename web/settings/assets/{vehicle-189fc2cb.js => vehicle-0e30b50e.js} (94%) rename web/settings/assets/{vehicle-0247f03c.js => vehicle-0ea9ae58.js} (93%) rename web/settings/assets/{vehicle-c865f314.js => vehicle-11ffdccd.js} (91%) rename web/settings/assets/{vehicle-b76d2976.js => vehicle-344c6660.js} (91%) rename web/settings/assets/{vehicle-84dd6d0d.js => vehicle-34ce6cc8.js} (95%) rename web/settings/assets/{vehicle-f74618cf.js => vehicle-677f2094.js} (91%) rename web/settings/assets/{vehicle-2c5d967c.js => vehicle-82a4990a.js} (90%) delete mode 100644 web/settings/assets/vehicle-839ee3de.js rename web/settings/assets/{vehicle-6f02cb37.js => vehicle-8cbf750d.js} (92%) rename web/settings/assets/{vehicle-174df8ec.js => vehicle-c74f02d0.js} (93%) rename web/settings/assets/{vehicle-0969da15.js => vehicle-cbd74ad8.js} (91%) create mode 100644 web/settings/assets/vehicle-e7320818.js rename web/settings/assets/{vehicle-8bdcc244.js => vehicle-ebf7e590.js} (95%) rename web/settings/assets/{vehicle-316d265a.js => vehicle-ef079f93.js} (92%) create mode 100644 web/settings/assets/vendor-20bb207d.js delete mode 100644 web/settings/assets/vendor-94ac8c48.js rename web/settings/assets/{vendor-axios-dc63434e.js => vendor-axios-13ef03ae.js} (99%) rename web/settings/assets/{vendor-bootstrap-9f620114.js => vendor-bootstrap-d275de6c.js} (99%) rename web/settings/assets/{vendor-chartjs-dd3fd71e.js => vendor-chartjs-93103a11.js} (99%) rename web/settings/assets/{vendor-fortawesome-ad83e535.js => vendor-fortawesome-838df0c9.js} (99%) rename web/settings/assets/{vendor-jquery-f7104ff8.js => vendor-jquery-89b63fca.js} (99%) rename web/settings/assets/{vendor-sortablejs-dbc23470.js => vendor-sortablejs-ad1d2cc8.js} (99%) diff --git a/web/settings/assets/ChargeLog-be6ba638.js b/web/settings/assets/ChargeLog-0999e18c.js similarity index 51% rename from web/settings/assets/ChargeLog-be6ba638.js rename to web/settings/assets/ChargeLog-0999e18c.js index 94f47bf962..0adf03b8c9 100644 --- a/web/settings/assets/ChargeLog-be6ba638.js +++ b/web/settings/assets/ChargeLog-0999e18c.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-ad83e535.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-94ac8c48.js";import{C as N}from"./index-cbcca7a0.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.log("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-838df0c9.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-20bb207d.js";import{C as N}from"./index-f08a7306.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-0b5b847e.js b/web/settings/assets/ChargePointInstallation-0b5b847e.js new file mode 100644 index 0000000000..de99e91da3 --- /dev/null +++ b/web/settings/assets/ChargePointInstallation-0b5b847e.js @@ -0,0 +1 @@ +import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-838df0c9.js";import{_ as L,C as oe}from"./index-f08a7306.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-9ab109c4.js"),["assets/chargePoint-9ab109c4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-75b0bdf9.js"),["assets/chargePoint-75b0bdf9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-9f9283b5.js"),["assets/chargePoint-9f9283b5.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-792da849.js"),["assets/chargePoint-792da849.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-83d3ee27.js"),["assets/chargePoint-83d3ee27.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-47a32a91.js"),["assets/chargePoint-47a32a91.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-dfab65eb.js"),["assets/commands-dfab65eb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/ChargePointInstallation-40572ce1.js b/web/settings/assets/ChargePointInstallation-40572ce1.js deleted file mode 100644 index cd6f1f0033..0000000000 --- a/web/settings/assets/ChargePointInstallation-40572ce1.js +++ /dev/null @@ -1 +0,0 @@ -import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-ad83e535.js";import{_ as L,C as oe}from"./index-cbcca7a0.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-07057692.js"),["assets/chargePoint-07057692.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a56bc604.js"),["assets/chargePoint-a56bc604.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-7200a105.js"),["assets/chargePoint-7200a105.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-80e648c2.js"),["assets/chargePoint-80e648c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-4a124bb9.js"),["assets/chargePoint-4a124bb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-10f32a1a.js"),["assets/chargePoint-10f32a1a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-516069c3.js"),["assets/commands-516069c3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");console.log(e);let a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return console.log(a),a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-372a98ba.js b/web/settings/assets/Chart-73a93152.js similarity index 97% rename from web/settings/assets/Chart-372a98ba.js rename to web/settings/assets/Chart-73a93152.js index 70cc78adc8..aba5c0b49b 100644 --- a/web/settings/assets/Chart-372a98ba.js +++ b/web/settings/assets/Chart-73a93152.js @@ -1 +1 @@ -import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-cbcca7a0.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-dd3fd71e.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; +import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-f08a7306.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-93103a11.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; diff --git a/web/settings/assets/CloudConfig-fb035176.js b/web/settings/assets/CloudConfig-4d98a70d.js similarity index 96% rename from web/settings/assets/CloudConfig-fb035176.js rename to web/settings/assets/CloudConfig-4d98a70d.js index d0578f7eed..d96c89a506 100644 --- a/web/settings/assets/CloudConfig-fb035176.js +++ b/web/settings/assets/CloudConfig-4d98a70d.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-cbcca7a0.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0f3013d.js"),["assets/backup_cloud-e0f3013d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-f1ce5010.js"),["assets/backup_cloud-f1ce5010.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; +import{l as z,a0 as V,a1 as H,a2 as j,a3 as A,a4 as P,F as R}from"./vendor-fortawesome-838df0c9.js";import{_ as D,C as N}from"./index-f08a7306.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function K(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0e3e868.js"),["assets/backup_cloud-e0e3e868.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-6519f98a.js"),["assets/backup_cloud-6519f98a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; diff --git a/web/settings/assets/DebugConfig-0afeacb4.js b/web/settings/assets/DebugConfig-8fb43a78.js similarity index 92% rename from web/settings/assets/DebugConfig-0afeacb4.js rename to web/settings/assets/DebugConfig-8fb43a78.js index eacbdd3ddf..5f34186446 100644 --- a/web/settings/assets/DebugConfig-0afeacb4.js +++ b/web/settings/assets/DebugConfig-8fb43a78.js @@ -1,2 +1,2 @@ -import{l as h,Z as w,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as _}from"./index-cbcca7a0.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Z as w,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as _}from"./index-f08a7306.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-6358761f.js b/web/settings/assets/GeneralChargeConfig-48509d36.js similarity index 87% rename from web/settings/assets/GeneralChargeConfig-6358761f.js rename to web/settings/assets/GeneralChargeConfig-48509d36.js index dc9f48382f..52f65b4129 100644 --- a/web/settings/assets/GeneralChargeConfig-6358761f.js +++ b/web/settings/assets/GeneralChargeConfig-48509d36.js @@ -1 +1 @@ -import{C as c}from"./index-cbcca7a0.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-f08a7306.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-ce149f67.js b/web/settings/assets/GeneralConfig-f5ba108a.js similarity index 97% rename from web/settings/assets/GeneralConfig-ce149f67.js rename to web/settings/assets/GeneralConfig-f5ba108a.js index 8b992c5c34..a369c921ef 100644 --- a/web/settings/assets/GeneralConfig-ce149f67.js +++ b/web/settings/assets/GeneralConfig-f5ba108a.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-cbcca7a0.js";import{_ as h,p as r,k as u,l,q as i,A as o,L as s,z as b,u as a}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},w={name:"generalConfigForm"},_=i("br",null,null,-1),W=i("br",null,null,-1),k=i("br",null,null,-1),z=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},V=i("br",null,null,-1),y=i("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),x=i("br",null,null,-1),P=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),q={key:0},L={key:1},N=i("br",null,null,-1);function E(e,t,A,D,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return u(),l("div",B,[i("form",w,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),_,W,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.'),k,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),z,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"])]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),V,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),x,P]),_:1},8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),_,W,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.'),k,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),z,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"])]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),V,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),x,P]),_:1},8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-d94203e2.js"),["assets/bat-d94203e2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-16bcb8fc.js"),["assets/counter-16bcb8fc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-eef610e6.js"),["assets/inverter-eef610e6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-17d0ebe7.js"),["assets/bat-17d0ebe7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-d1489ce8.js"),["assets/counter-d1489ce8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-21044b75.js"),["assets/external_inverter-21044b75.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-267fccce.js"),["assets/inverter-267fccce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-39b4c6ba.js"),["assets/bat-39b4c6ba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-08f8d2f2.js"),["assets/counter-08f8d2f2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-0d09b23e.js"),["assets/counter-0d09b23e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-96db7f1d.js"),["assets/inverter-96db7f1d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-d04d3f5b.js"),["assets/bat-d04d3f5b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-969297fa.js"),["assets/counter-969297fa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-5c208b04.js"),["assets/external_inverter-5c208b04.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-be6aac70.js"),["assets/inverter-be6aac70.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-2524acf0.js"),["assets/counter-2524acf0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-c90183ae.js"),["assets/inverter-c90183ae.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-3f0ca072.js"),["assets/bat-3f0ca072.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-57c9333b.js"),["assets/counter-57c9333b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-1c1592c9.js"),["assets/inverter-1c1592c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-514861df.js"),["assets/bat-514861df.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-ba7ae169.js"),["assets/counter_s0-ba7ae169.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ccecb663.js"),["assets/counter_sm-ccecb663.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-0fd0b224.js"),["assets/inverter-0fd0b224.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-874f748e.js"),["assets/bat-874f748e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-a3e434aa.js"),["assets/counter-a3e434aa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-08367390.js"),["assets/inverter-08367390.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-0e028baf.js"),["assets/bat-0e028baf.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-75ce0061.js"),["assets/counter-75ce0061.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-15408a2b.js"),["assets/inverter-15408a2b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-46c566c9.js"),["assets/bat-46c566c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-45ecd9ff.js"),["assets/counter-45ecd9ff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-86ab0f22.js"),["assets/inverter-86ab0f22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-5b22e35d.js"),["assets/bat-5b22e35d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-6247163c.js"),["assets/counter-6247163c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4c98a82a.js"),["assets/inverter-4c98a82a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-1ddce36f.js"),["assets/counter-1ddce36f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-268a0365.js"),["assets/bat-268a0365.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-e3807695.js"),["assets/counter-e3807695.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5b0c8748.js"),["assets/inverter-5b0c8748.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-b4f1d52c.js"),["assets/counter-b4f1d52c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f399f0d.js"),["assets/inverter-1f399f0d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-8c6dadd9.js"),["assets/inverter-8c6dadd9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-ec698ff1.js"),["assets/bat-ec698ff1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-9a41f79b.js"),["assets/counter-9a41f79b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f9807fb1.js"),["assets/inverter-f9807fb1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-ed28bc4b.js"),["assets/counter-ed28bc4b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-508f415f.js"),["assets/inverter-508f415f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-0eeeca9c.js"),["assets/bat-0eeeca9c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-cf4834fd.js"),["assets/counter-cf4834fd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-e5461fd3.js"),["assets/inverter-e5461fd3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-3af1a10a.js"),["assets/bat-3af1a10a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-1516cbf4.js"),["assets/counter-1516cbf4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-40f5b027.js"),["assets/inverter-40f5b027.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-bbb09227.js"),["assets/bat-bbb09227.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-27edc2dc.js"),["assets/bat-27edc2dc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-4fb4e495.js"),["assets/counter-4fb4e495.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-a4741525.js"),["assets/inverter-a4741525.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-aaf46348.js"),["assets/bat-aaf46348.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-0abbb386.js"),["assets/counter-0abbb386.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-d02eb41e.js"),["assets/inverter-d02eb41e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1b75ddba.js"),["assets/inverter-1b75ddba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-c9dc9c81.js"),["assets/counter-c9dc9c81.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f7d9af29.js"),["assets/inverter-f7d9af29.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-b804ace4.js"),["assets/counter-b804ace4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-3d45d55a.js"),["assets/inverter-3d45d55a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-df8e198a.js"),["assets/bat-df8e198a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-e15f2c06.js"),["assets/counter-e15f2c06.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-326280ce.js"),["assets/inverter-326280ce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-f963a986.js"),["assets/bat-f963a986.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-83354bca.js"),["assets/counter-83354bca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-8ca711bc.js"),["assets/inverter-8ca711bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-595642c8.js"),["assets/bat-595642c8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-3d819a6f.js"),["assets/inverter-3d819a6f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-e62d7b1e.js"),["assets/bat-e62d7b1e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-0524aa8c.js"),["assets/counter-0524aa8c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-47bedabe.js"),["assets/inverter-47bedabe.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-00e8bfb9.js"),["assets/counter-00e8bfb9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-25d1e220.js"),["assets/counter-25d1e220.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6ce20d89.js"),["assets/inverter-6ce20d89.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e8cdd332.js"),["assets/bat-e8cdd332.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-5d29a479.js"),["assets/bat_smart_energy-5d29a479.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-107b4963.js"),["assets/counter-107b4963.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-89491124.js"),["assets/inverter-89491124.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-ce4aa848.js"),["assets/bat-ce4aa848.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-92eb5977.js"),["assets/inverter-92eb5977.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-9c24dc5c.js"),["assets/counter-9c24dc5c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-af852271.js"),["assets/inverter-af852271.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-cd290a98.js"),["assets/counter-cd290a98.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-b09d3ede.js"),["assets/counter-b09d3ede.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-b1415371.js"),["assets/inverter-b1415371.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-fca60eb6.js"),["assets/counter-fca60eb6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-7f5cbd1f.js"),["assets/inverter-7f5cbd1f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-4b1f210f.js"),["assets/bat-4b1f210f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-32007d3e.js"),["assets/counter-32007d3e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-90b5924d.js"),["assets/inverter-90b5924d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-2fda105e.js"),["assets/counter-2fda105e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e3d31521.js"),["assets/inverter-e3d31521.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-f2ff4071.js"),["assets/bat-f2ff4071.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-71a69a0f.js"),["assets/counter-71a69a0f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-af9b2b79.js"),["assets/external_inverter-af9b2b79.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-5d68f662.js"),["assets/inverter-5d68f662.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b2de0630.js"),["assets/bat-b2de0630.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a532223b.js"),["assets/inverter-a532223b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-93524d1b.js"),["assets/bat-93524d1b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-09b39d2d.js"),["assets/counter-09b39d2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5cfbe42d.js"),["assets/inverter-5cfbe42d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-8c7d349e.js"),["assets/bat-8c7d349e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e7921fa4.js"),["assets/counter-e7921fa4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-a6e26156.js"),["assets/inverter-a6e26156.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-22a2eeff.js"),["assets/bat-22a2eeff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-d2ccf27d.js"),["assets/inverter-d2ccf27d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-7500700f.js"),["assets/bat-7500700f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-9513e8db.js"),["assets/counter-9513e8db.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-3fdb1742.js"),["assets/inverter-3fdb1742.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-b959eebb.js"),["assets/inverter-b959eebb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-9894d537.js"),["assets/bat-9894d537.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-25dcea49.js"),["assets/counter-25dcea49.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-c08d4e42.js"),["assets/inverter-c08d4e42.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-bbcd36bc.js"),["assets/bat_api-bbcd36bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-7b1ae23d.js"),["assets/bat_modbus-7b1ae23d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-5cb15a92.js"),["assets/counter-5cb15a92.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-6c62c4f0.js"),["assets/bat-6c62c4f0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-9a77fa00.js"),["assets/counter-9a77fa00.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-135f51a3.js"),["assets/inverter-135f51a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a13ecb51.js"),["assets/counter-a13ecb51.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-6264518e.js"),["assets/counter-6264518e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-9962a05f.js"),["assets/inverter-9962a05f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-a028ca0c.js"),["assets/inverter-a028ca0c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/HardwareInstallation-053ec617.js b/web/settings/assets/HardwareInstallation-053ec617.js deleted file mode 100644 index 4ff052996b..0000000000 --- a/web/settings/assets/HardwareInstallation-053ec617.js +++ /dev/null @@ -1 +0,0 @@ -import{l as N,d as U,t as G,R as F,S as H,K as J,L as Z,M as Q,F as $}from"./vendor-fortawesome-ad83e535.js";import{_ as e,C as X}from"./index-cbcca7a0.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a92f022e.js"),["assets/bat-a92f022e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-60655200.js"),["assets/counter-60655200.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b47e8b65.js"),["assets/inverter-b47e8b65.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-3980db8f.js"),["assets/bat-3980db8f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-fcc6cfc8.js"),["assets/counter-fcc6cfc8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c6cc5286.js"),["assets/external_inverter-c6cc5286.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-57f7e67c.js"),["assets/inverter-57f7e67c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-d1af67af.js"),["assets/bat-d1af67af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-7b85a5b2.js"),["assets/counter-7b85a5b2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-d335a007.js"),["assets/counter-d335a007.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-91521524.js"),["assets/inverter-91521524.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-4320b5cc.js"),["assets/bat-4320b5cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-fbf1efa1.js"),["assets/counter-fbf1efa1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-debacbf1.js"),["assets/external_inverter-debacbf1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-35d50734.js"),["assets/inverter-35d50734.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-af942561.js"),["assets/counter-af942561.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-b35ac71f.js"),["assets/inverter-b35ac71f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-ac5ee104.js"),["assets/bat-ac5ee104.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-da58c807.js"),["assets/counter-da58c807.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-0a8a02aa.js"),["assets/inverter-0a8a02aa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-80bc8859.js"),["assets/bat-80bc8859.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-0068172e.js"),["assets/counter_s0-0068172e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-802e0059.js"),["assets/counter_sm-802e0059.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-fb25d42c.js"),["assets/inverter-fb25d42c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-fd9f4fe4.js"),["assets/bat-fd9f4fe4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-9097a073.js"),["assets/counter-9097a073.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-d63a850e.js"),["assets/inverter-d63a850e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-2f8005f2.js"),["assets/bat-2f8005f2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-6d0620dd.js"),["assets/counter-6d0620dd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-735276eb.js"),["assets/inverter-735276eb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-ccba567b.js"),["assets/bat-ccba567b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-8d4f402a.js"),["assets/counter-8d4f402a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-be294b52.js"),["assets/inverter-be294b52.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-815fdbb1.js"),["assets/bat-815fdbb1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-a2c453f6.js"),["assets/counter-a2c453f6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-91520693.js"),["assets/device-91520693.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-aba6e6d2.js"),["assets/inverter-aba6e6d2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-7a7be3d3.js"),["assets/counter-7a7be3d3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-f9178e22.js"),["assets/bat-f9178e22.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-46a15c2b.js"),["assets/counter-46a15c2b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-da627431.js"),["assets/inverter-da627431.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-ad208981.js"),["assets/counter-ad208981.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-d7dcc616.js"),["assets/inverter-d7dcc616.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-b6d89f35.js"),["assets/inverter-b6d89f35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-45b559ec.js"),["assets/bat-45b559ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-f56715cd.js"),["assets/counter-f56715cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-3515d2b5.js"),["assets/inverter-3515d2b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-5b0b9661.js"),["assets/counter-5b0b9661.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-66b1df21.js"),["assets/inverter-66b1df21.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-904c9172.js"),["assets/bat-904c9172.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-2e4fa5c2.js"),["assets/counter-2e4fa5c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-f266f49d.js"),["assets/inverter-f266f49d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-212960fc.js"),["assets/bat-212960fc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-816c921e.js"),["assets/counter-816c921e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-e383405a.js"),["assets/inverter-e383405a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-3e58123d.js"),["assets/bat-3e58123d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-3d2b7acc.js"),["assets/bat-3d2b7acc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-21f55471.js"),["assets/counter-21f55471.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-09d68c12.js"),["assets/inverter-09d68c12.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-ba791935.js"),["assets/bat-ba791935.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-6369ff43.js"),["assets/counter-6369ff43.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-0daad30f.js"),["assets/inverter-0daad30f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c0320c10.js"),["assets/inverter-c0320c10.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-3df9b0e7.js"),["assets/counter-3df9b0e7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f0ad6bcd.js"),["assets/inverter-f0ad6bcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-46b207f3.js"),["assets/counter-46b207f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-4ed4378e.js"),["assets/inverter-4ed4378e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-557284f3.js"),["assets/bat-557284f3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-77841659.js"),["assets/counter-77841659.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-3b84e31d.js"),["assets/inverter-3b84e31d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-61bcf2f8.js"),["assets/bat-61bcf2f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-d03b355d.js"),["assets/counter-d03b355d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-42feff92.js"),["assets/inverter-42feff92.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-12170e78.js"),["assets/bat-12170e78.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-f900cffa.js"),["assets/inverter-f900cffa.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-cbc92919.js"),["assets/bat-cbc92919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-82a793a2.js"),["assets/counter-82a793a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-89a115de.js"),["assets/inverter-89a115de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-b30c239d.js"),["assets/counter-b30c239d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-70b9e720.js"),["assets/counter-70b9e720.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6afece8c.js"),["assets/inverter-6afece8c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cb226603.js"),["assets/bat-cb226603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-817c3655.js"),["assets/bat_smart_energy-817c3655.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-fb6b0fb9.js"),["assets/counter-fb6b0fb9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-8ebf65c2.js"),["assets/inverter-8ebf65c2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-4b5ddf83.js"),["assets/bat-4b5ddf83.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-bce80bd5.js"),["assets/inverter-bce80bd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-eab5abf7.js"),["assets/counter-eab5abf7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-5500500b.js"),["assets/inverter-5500500b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-57df9eec.js"),["assets/counter-57df9eec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-18fd3233.js"),["assets/counter-18fd3233.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-39afe3b5.js"),["assets/inverter-39afe3b5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-1c5a2313.js"),["assets/counter-1c5a2313.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b33414cf.js"),["assets/inverter-b33414cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-8af3358d.js"),["assets/bat-8af3358d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-b2081459.js"),["assets/counter-b2081459.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-973593c5.js"),["assets/inverter-973593c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-4dc3cbd5.js"),["assets/counter-4dc3cbd5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-22be4ed9.js"),["assets/inverter-22be4ed9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-e1949609.js"),["assets/bat-e1949609.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-2365410a.js"),["assets/counter-2365410a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4989c79d.js"),["assets/external_inverter-4989c79d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-983f9bf4.js"),["assets/inverter-983f9bf4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b91f4e63.js"),["assets/bat-b91f4e63.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-2b727919.js"),["assets/inverter-2b727919.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-9ff121c5.js"),["assets/bat-9ff121c5.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-f322702a.js"),["assets/counter-f322702a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-a4f4de69.js"),["assets/inverter-a4f4de69.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-f30697e9.js"),["assets/bat-f30697e9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-df3e561f.js"),["assets/counter-df3e561f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3e855a0b.js"),["assets/inverter-3e855a0b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6fcf71db.js"),["assets/bat-6fcf71db.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-3df75149.js"),["assets/inverter-3df75149.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-3dbfaf1b.js"),["assets/bat-3dbfaf1b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-478d9577.js"),["assets/counter-478d9577.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-ae905211.js"),["assets/inverter-ae905211.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-1a27b5a2.js"),["assets/inverter-1a27b5a2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-f75dd877.js"),["assets/bat-f75dd877.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-2a189926.js"),["assets/counter-2a189926.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-bc54ef72.js"),["assets/inverter-bc54ef72.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-e58852af.js"),["assets/bat_api-e58852af.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-260d9b94.js"),["assets/bat_modbus-260d9b94.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-73783603.js"),["assets/counter-73783603.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-180a64ef.js"),["assets/bat-180a64ef.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-1905ec77.js"),["assets/counter-1905ec77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-d5ca1a80.js"),["assets/inverter-d5ca1a80.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-c0f3f4ac.js"),["assets/counter-c0f3f4ac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-00ec4a93.js"),["assets/counter-00ec4a93.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-ba59974f.js"),["assets/inverter-ba59974f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-98ed6e35.js"),["assets/inverter-98ed6e35.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-03a0ce90.js"),["assets/device-03a0ce90.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-48b82d13.js"),["assets/device-48b82d13.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-44e40f8a.js"),["assets/device-44e40f8a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-d5aedcd9.js"),["assets/device-d5aedcd9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-ae65393a.js"),["assets/device-ae65393a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-c7a69fb7.js"),["assets/device-c7a69fb7.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c5eaae23.js"),["assets/device-c5eaae23.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-76b564cb.js"),["assets/device-76b564cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-333a1847.js"),["assets/device-333a1847.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-5442f3f8.js"),["assets/device-5442f3f8.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-9c25dea2.js"),["assets/device-9c25dea2.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-7700d0d1.js"),["assets/device-7700d0d1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-91520693.js"),["assets/device-91520693.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-ff4b5125.js"),["assets/device-ff4b5125.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-f3520fbc.js"),["assets/device-f3520fbc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-f186e4bf.js"),["assets/device-f186e4bf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-efcbb283.js"),["assets/device-efcbb283.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-23fbc413.js"),["assets/device-23fbc413.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-5e36d94b.js"),["assets/device-5e36d94b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-10d2c4c1.js"),["assets/device-10d2c4c1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-b04bd256.js"),["assets/device-b04bd256.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-cdede991.js"),["assets/device-cdede991.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-1ebd188c.js"),["assets/device-1ebd188c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-68cea660.js"),["assets/device-68cea660.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-3c66abac.js"),["assets/device-3c66abac.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-5c559131.js"),["assets/device-5c559131.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-f581669c.js"),["assets/device-f581669c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-e88cb248.js"),["assets/device-e88cb248.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-2fc1a957.js"),["assets/device-2fc1a957.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-7fbce287.js"),["assets/device-7fbce287.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-e2dad607.js"),["assets/device-e2dad607.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-fcd34186.js"),["assets/device-fcd34186.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-2a7fcdcd.js"),["assets/device-2a7fcdcd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-11808744.js"),["assets/device-11808744.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-060ee4fd.js"),["assets/device-060ee4fd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-9f1d6204.js"),["assets/device-9f1d6204.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-6223df3d.js"),["assets/device-6223df3d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c0377afe.js"),["assets/device-c0377afe.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-71f6eb4f.js"),["assets/device-71f6eb4f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-b59b9c77.js"),["assets/device-b59b9c77.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-9f8cfcd3.js"),["assets/device-9f8cfcd3.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-84c0ab33.js"),["assets/device-84c0ab33.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-0c072e3b.js"),["assets/device-0c072e3b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-d971bed6.js"),["assets/device-d971bed6.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-368b885c.js"),["assets/device-368b885c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-eded82a1.js"),["assets/device-eded82a1.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-eed5fccd.js"),["assets/device-eed5fccd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-9114b4f4.js"),["assets/device-9114b4f4.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-736742cc.js"),["assets/device-736742cc.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-ae9d7f6e.js"),["assets/device-ae9d7f6e.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-c49a0ced.js"),["assets/device-c49a0ced.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-24f0a9e0.js"),["assets/device-24f0a9e0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-2b476100.js"),["assets/device-2b476100.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-34d66ae0.js"),["assets/device-34d66ae0.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-554ac70d.js"),["assets/device-554ac70d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-94f0ef9b.js"),["assets/device-94f0ef9b.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-c553c1ee.js"),["assets/device-c553c1ee.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-1646b158.js b/web/settings/assets/InstantChargeConfig-30b13a1a.js similarity index 84% rename from web/settings/assets/InstantChargeConfig-1646b158.js rename to web/settings/assets/InstantChargeConfig-30b13a1a.js index af8d8f6fa3..7ad55973c4 100644 --- a/web/settings/assets/InstantChargeConfig-1646b158.js +++ b/web/settings/assets/InstantChargeConfig-30b13a1a.js @@ -1 +1 @@ -import{C as l}from"./index-cbcca7a0.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-f08a7306.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-c100c109.js b/web/settings/assets/LegalSettings-f8ef4166.js similarity index 84% rename from web/settings/assets/LegalSettings-c100c109.js rename to web/settings/assets/LegalSettings-f8ef4166.js index dbef7554cd..e5b6f0b585 100644 --- a/web/settings/assets/LegalSettings-c100c109.js +++ b/web/settings/assets/LegalSettings-f8ef4166.js @@ -1 +1 @@ -import{C as g}from"./index-cbcca7a0.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-f08a7306.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-8a4d7343.js b/web/settings/assets/LoadManagementConfig-ca6e28c3.js similarity index 95% rename from web/settings/assets/LoadManagementConfig-8a4d7343.js rename to web/settings/assets/LoadManagementConfig-ca6e28c3.js index 372f593632..4fbddbfc3a 100644 --- a/web/settings/assets/LoadManagementConfig-8a4d7343.js +++ b/web/settings/assets/LoadManagementConfig-ca6e28c3.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-ad83e535.js";import{C as $}from"./index-cbcca7a0.js";import{S as x}from"./OpenwbSortableList-8561f9a9.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as $}from"./index-f08a7306.js";import{S as x}from"./OpenwbSortableList-ac8ac331.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-5474c1b1.js b/web/settings/assets/MqttBridgeConfig-5474c1b1.js new file mode 100644 index 0000000000..4869a45726 --- /dev/null +++ b/web/settings/assets/MqttBridgeConfig-5474c1b1.js @@ -0,0 +1 @@ +import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as D}from"./index-f08a7306.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,v]of Object.entries(e))v.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},g=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=g(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=g(()=>f("hr",null,null,-1)),R=g(()=>f("hr",null,null,-1));function j(e,u,v,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),k=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),M=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(M,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(M,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(k,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(k,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/MqttBridgeConfig-9fb8ed69.js b/web/settings/assets/MqttBridgeConfig-9fb8ed69.js deleted file mode 100644 index dbcc7de430..0000000000 --- a/web/settings/assets/MqttBridgeConfig-9fb8ed69.js +++ /dev/null @@ -1 +0,0 @@ -import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-ad83e535.js";import{C as D}from"./index-cbcca7a0.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&(console.log("filtering bridge "+u,g),delete e[u]);return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),console.log("removeMqttBridgeModal",e),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},v=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=v(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=v(()=>f("hr",null,null,-1)),R=v(()=>f("hr",null,null,-1));function j(e,u,g,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),M=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(M,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(M,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OpenwbSortableList-8561f9a9.js b/web/settings/assets/OpenwbSortableList-ac8ac331.js similarity index 52% rename from web/settings/assets/OpenwbSortableList-8561f9a9.js rename to web/settings/assets/OpenwbSortableList-ac8ac331.js index 861577c200..8b5866db21 100644 --- a/web/settings/assets/OpenwbSortableList-8561f9a9.js +++ b/web/settings/assets/OpenwbSortableList-ac8ac331.js @@ -1,12 +1,7 @@ -import{_ as b,a3 as L,p as c,k as a,y as u,L as x,q as l,n as h,A as _,z as p,u as g,x as w,l as f,m as C}from"./vendor-94ac8c48.js";import{l as v,a5 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-ad83e535.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list",!0),i=c("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:n})=>[l("li",null,[l("div",{class:h(["element-titel",s.classes(n)])},[l("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(n)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(n)},null,8,["icon"])):p("v-if",!0),g(" "+w(s.getElementLabel(n.id)),1)]),p(` +import{_ as b,a3 as L,p as r,k as a,y as u,L as x,q as n,n as g,A as _,z as p,u as h,x as w,l as f,m as C}from"./vendor-20bb207d.js";import{l as v,a5 as H,J as O,K as S,L as N,M as B,F as y,f as E,a as A}from"./vendor-fortawesome-838df0c9.js";v.add(H,O,S,N,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:L,FontAwesomeIcon:y},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 q(e,t,o,k,c,s){const d=r("font-awesome-icon"),m=r("openwb-nested-list",!0),i=r("draggable");return a(),u(i,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:x(({element:l})=>[n("li",null,[n("div",{class:g(["element-titel",s.classes(l)])},[n("span",null,[_(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(l)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(l)},null,8,["icon"])):p("v-if",!0),h(" "+w(s.getElementLabel(l.id)),1)]),p(` - - `)],2),_(m,{modelValue:n.children,"onUpdate:modelValue":V=>n.children=V,labels:o.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const D=b(j,[["render",q],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]);v.add(E,A);const I={name:"OpenwbSortableList",props:{id:String,title:String,modelValue:Object,labels:{type:Object,default:void 0}},emits:["update:modelValue"],components:{FontAwesomeIcon:y,OpenwbNestedList:D},data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){console.debug("update in sortableList",e),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},U={class:"form-row mb-1"},W={class:"col-md-8"},z={class:"form-row"},F={key:1},Q={key:0,class:"form-row alert alert-info my-1 small"};function G(e,t,o,k,r,s){const d=c("font-awesome-icon"),m=c("openwb-nested-list");return a(),f("div",U,[l("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[g(w(o.title)+" ",1),e.$slots.help?(a(),u(d,{key:0,icon:r.showHelp?["fas","question-circle"]:["far","question-circle"],class:h(r.showHelp?"text-info":"")},null,8,["icon","class"])):p("v-if",!0)]),l("div",W,[l("div",z,[s.value!==void 0?(a(),u(m,{key:0,modelValue:s.value,"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i),labels:o.labels},null,8,["modelValue","labels"])):(a(),f("div",F,"Warte auf Daten..."))]),r.showHelp?(a(),f("span",Q,[C(e.$slots,"help")])):p("v-if",!0)])])}const M=b(I,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{M as S}; + `)],2),_(m,{modelValue:l.children,"onUpdate:modelValue":V=>l.children=V,labels:o.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const I=b(j,[["render",q],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]);v.add(E,A);const U={name:"OpenwbSortableList",props:{id:String,title:String,modelValue:Object,labels:{type:Object,default:void 0}},emits:["update:modelValue"],components:{FontAwesomeIcon:y,OpenwbNestedList:I},data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){console.debug("update in sortableList",e),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},W={class:"form-row mb-1"},z={class:"col-md-8"},D={class:"form-row"},F={key:1},Q={key:0,class:"form-row alert alert-info my-1 small"};function G(e,t,o,k,c,s){const d=r("font-awesome-icon"),m=r("openwb-nested-list");return a(),f("div",W,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[h(w(o.title)+" ",1),e.$slots.help?(a(),u(d,{key:0,icon:c.showHelp?["fas","question-circle"]:["far","question-circle"],class:g(c.showHelp?"text-info":"")},null,8,["icon","class"])):p("v-if",!0)]),n("div",z,[n("div",D,[s.value!==void 0?(a(),u(m,{key:0,modelValue:s.value,"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i),labels:o.labels},null,8,["modelValue","labels"])):(a(),f("div",F,"Warte auf Daten..."))]),c.showHelp?(a(),f("span",Q,[C(e.$slots,"help")])):p("v-if",!0)])])}const M=b(U,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{M as S}; diff --git a/web/settings/assets/OptionalComponents-df4003ba.js b/web/settings/assets/OptionalComponents-4617e1d7.js similarity index 98% rename from web/settings/assets/OptionalComponents-df4003ba.js rename to web/settings/assets/OptionalComponents-4617e1d7.js index a59e7dda26..9fc8d7c774 100644 --- a/web/settings/assets/OptionalComponents-df4003ba.js +++ b/web/settings/assets/OptionalComponents-4617e1d7.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-cbcca7a0.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as D,p as s,k as f,l as b,A as o,L as a,u as l,x,q as i,a0 as T,y as _,a1 as $,z as r}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,u,c,g,d){const p=s("openwb-base-alert"),v=s("openwb-base-textarea");return f(),b("div",q,[o(p,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(u.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>d.updateConfiguration(m,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:a(()=>[i("pre",null,x(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),z={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),T({loader:()=>W(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-af0ce411.js"),["assets/displayTheme-af0ce411.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function C(t,n,u,c,g,d){return f(),_($(d.myComponent),{configuration:u.configuration,displayThemeType:u.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=p=>d.updateConfiguration(p))},null,40,["configuration","displayThemeType"])}const O=D(z,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),I={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:O},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","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"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},P={name:"optionalComponentsForm"},F={key:0},R=i("br",null,null,-1),M=i("br",null,null,-1),U=["innerHTML"],j={key:0},H=i("br",null,null,-1),J=i("hr",null,null,-1),Z={key:1},K=i("hr",null,null,-1),G=i("br",null,null,-1),Q=i("hr",null,null,-1),X={key:2},Y=i("hr",null,null,-1),tt=i("hr",null,null,-1),nt={key:0};function et(t,n,u,c,g,d){const p=s("openwb-base-button-group-input"),v=s("openwb-base-alert"),m=s("openwb-base-card"),y=s("openwb-base-heading"),h=s("openwb-base-range-input"),k=s("openwb-base-select-input"),L=s("openwb-display-theme-proxy"),E=s("openwb-base-submit-buttons");return f(),b("div",N,[i("form",P,[o(m,{title:"RFID"},{default:a(()=>[o(p,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:a(()=>[l(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(f(),b("div",F,[o(v,{subtype:"info"},{default:a(()=>[l(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,l(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,i("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,U)]),_:1})])):r("v-if",!0)]),_:1}),r(` +import{_ as w,C as B}from"./index-f08a7306.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as D,p as s,k as f,l as b,A as o,L as a,u as l,x,q as i,a0 as T,y as _,a1 as $,z as r}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,u,c,g,d){const p=s("openwb-base-alert"),v=s("openwb-base-textarea");return f(),b("div",q,[o(p,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(u.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>d.updateConfiguration(m,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:a(()=>[i("pre",null,x(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),z={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),T({loader:()=>W(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-35595a93.js"),["assets/displayTheme-35595a93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function C(t,n,u,c,g,d){return f(),_($(d.myComponent),{configuration:u.configuration,displayThemeType:u.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=p=>d.updateConfiguration(p))},null,40,["configuration","displayThemeType"])}const O=D(z,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),I={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:O},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","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"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},P={name:"optionalComponentsForm"},F={key:0},R=i("br",null,null,-1),M=i("br",null,null,-1),U=["innerHTML"],j={key:0},H=i("br",null,null,-1),J=i("hr",null,null,-1),Z={key:1},K=i("hr",null,null,-1),G=i("br",null,null,-1),Q=i("hr",null,null,-1),X={key:2},Y=i("hr",null,null,-1),tt=i("hr",null,null,-1),nt={key:0};function et(t,n,u,c,g,d){const p=s("openwb-base-button-group-input"),v=s("openwb-base-alert"),m=s("openwb-base-card"),y=s("openwb-base-heading"),h=s("openwb-base-range-input"),k=s("openwb-base-select-input"),L=s("openwb-display-theme-proxy"),E=s("openwb-base-submit-buttons");return f(),b("div",N,[i("form",P,[o(m,{title:"RFID"},{default:a(()=>[o(p,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:a(()=>[l(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(f(),b("div",F,[o(v,{subtype:"info"},{default:a(()=>[l(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,l(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,i("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,U)]),_:1})])):r("v-if",!0)]),_:1}),r(` =this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}}},S={class:"pvChargeConfig"},V={name:"pvChargeConfigForm"},z={key:0},k={key:1},E=r("hr",null,null,-1),C=r("br",null,null,-1),L=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),U=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),q={key:0},R={key:1},A={key:0},I={key:1},F=r("br",null,null,-1),N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("hr",null,null,-1);function G(e,n,K,j,J,u){const p=g("openwb-base-alert"),c=g("openwb-base-button-group-input"),s=g("openwb-base-number-input"),m=g("openwb-base-card"),h=g("openwb-base-range-input"),b=g("openwb-base-heading"),f=g("openwb-base-submit-buttons");return o(),d("div",S,[r("form",V,[i(m,{title:"Regelparameter"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",z,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",k,[i(c,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],"model-value":u.calculateControlMode(),"onUpdate:modelValue":n[0]||(n[0]=t=>u.setControlMode(t))},{help:l(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["model-value"]),u.calculateControlMode()==="individual"?(o(),_(s,{key:0,title:"Minimum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:l(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["model-value"])):v("v-if",!0),u.calculateControlMode()==="individual"?(o(),_(s,{key:1,title:"Maximum",step:.01,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:l(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["model-value"])):v("v-if",!0),E,i(s,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),i(s,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:l(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),C,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),L,i(s,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:l(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),i(s,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:l(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),y,a(" 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"]),M,i(s,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:l(()=>[a(" 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)."),U,a(' 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).'),P,a(' 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.'),$,a(" 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(m,{title:"Phasenumschaltung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",q,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",R,[i(c,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:l(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(o(),_(h,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:l(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):v("v-if",!0)]))]),_:1}),i(m,{title:"Speicher-Beachtung"},{default:l(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(o(),d("div",A,[i(p,{subtype:"info"},{default:l(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),d("div",I,[i(c,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:l(()=>[a(' 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.'),F,N,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),D,O,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),Z,T,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),i(s,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:l(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),i(s,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:l(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),i(h,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:l(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),H,i(b,null,{default:l(()=>[a(" Laden mit Mindeststrom ")]),_:1}),i(h,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>u.updateBatterySwitchOnSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),i(h,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>u.updateBatterySwitchOffSoc(t))},{help:l(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),i(f,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=W(B,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/PVChargeConfig-7b09b63a.js b/web/settings/assets/PVChargeConfig-7b09b63a.js new file mode 100644 index 0000000000..7de33bd966 --- /dev/null +++ b/web/settings/assets/PVChargeConfig-7b09b63a.js @@ -0,0 +1 @@ +import{C as f}from"./index-f08a7306.js";import{_ as w,p as g,k as d,l as u,q as r,A as l,L as i,u as a,y as W,z as B}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"OpenwbPVChargeConfig",mixins:[f],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];var h="individual";return typeof n<"u"&&(n[0]===-230&&n[1]===0?h="export":n[0]===0&&n[1]===230?h="import":h="individual"),h},set(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=e,e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break}}}},methods:{updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}},watch:{controlMode(e){this.calculatedControlMode=e}}},V={class:"pvChargeConfig"},z={name:"pvChargeConfigForm"},E={key:0},k={key:1},C=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),L=r("br",null,null,-1),U=r("hr",null,null,-1),q=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),A={key:0},R={key:1},I={key:0},F={key:1},N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("br",null,null,-1),G=r("hr",null,null,-1);function K(e,n,h,j,J,s){const p=g("openwb-base-alert"),m=g("openwb-base-button-group-input"),o=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("openwb-base-range-input"),v=g("openwb-base-heading"),b=g("openwb-base-submit-buttons");return d(),u("div",V,[r("form",z,[l(_,{title:"Regelparameter"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",E,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",k,[l(m,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],modelValue:s.controlMode,"onUpdate:modelValue":n[0]||(n[0]=t=>s.controlMode=t)},{help:i(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["modelValue"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:i(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:i(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),C,l(o,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),l(o,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:i(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),y,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),M,l(o,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),l(o,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:i(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),L,a(" 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"]),U,l(o,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:i(()=>[a(" 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)."),q,a(' 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).'),P,a(' 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.'),$,a(" 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}),l(_,{title:"Phasenumschaltung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",A,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",R,[l(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:i(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(d(),W(c,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:i(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):B("v-if",!0)]))]),_:1}),l(_,{title:"Speicher-Beachtung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",I,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",F,[l(m,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:i(()=>[a(' 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.'),N,D,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),O,Z,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),T,H,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),l(o,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:i(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),l(o,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:i(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),l(c,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:i(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),G,l(v,null,{default:i(()=>[a(" Laden mit Mindeststrom ")]),_:1}),l(c,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>s.updateBatterySwitchOnSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),l(c,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>s.updateBatterySwitchOffSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),l(b,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=w(S,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-ff0252cd.js b/web/settings/assets/ScheduledChargeConfig-5a41484d.js similarity index 85% rename from web/settings/assets/ScheduledChargeConfig-ff0252cd.js rename to web/settings/assets/ScheduledChargeConfig-5a41484d.js index aab64f86d1..8e98155baa 100644 --- a/web/settings/assets/ScheduledChargeConfig-ff0252cd.js +++ b/web/settings/assets/ScheduledChargeConfig-5a41484d.js @@ -1 +1 @@ -import{C as g}from"./index-cbcca7a0.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-f08a7306.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-b79c5fd8.js b/web/settings/assets/Status-954adcf7.js similarity index 98% rename from web/settings/assets/Status-b79c5fd8.js rename to web/settings/assets/Status-954adcf7.js index aee058e963..ed59831af4 100644 --- a/web/settings/assets/Status-b79c5fd8.js +++ b/web/settings/assets/Status-954adcf7.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-ad83e535.js";import{C as Z}from"./index-cbcca7a0.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-838df0c9.js";import{C as Z}from"./index-f08a7306.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-bee6b474.js b/web/settings/assets/Support-bee6b474.js new file mode 100644 index 0000000000..317e020746 --- /dev/null +++ b/web/settings/assets/Support-bee6b474.js @@ -0,0 +1 @@ +import{l as w,g as y,F as V}from"./vendor-fortawesome-838df0c9.js";import{C as B}from"./index-f08a7306.js";import{_ as v,p as a,k as r,l as c,q as l,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=l("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=l("li",null," Stellen Sie 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),M=l("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=l("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),p=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return r(),c("div",C,[l("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[l("ul",null,[l("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[l("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/Support-d2984420.js b/web/settings/assets/Support-d2984420.js deleted file mode 100644 index cbc941a212..0000000000 --- a/web/settings/assets/Support-d2984420.js +++ /dev/null @@ -1 +0,0 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-ad83e535.js";import{C as B}from"./index-cbcca7a0.js";import{_ as v,p as l,k as r,l as c,q as a,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.log("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=a("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=a("li",null," Stellen Sie 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),M=a("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=a("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=l("router-link"),u=l("openwb-base-alert"),f=l("FontAwesomeIcon"),p=l("openwb-base-text-input"),m=l("openwb-base-textarea"),S=l("openwb-base-click-button"),k=l("openwb-base-card"),D=l("font-awesome-icon");return r(),c("div",C,[a("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[a("ul",null,[a("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[a("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-d604c488.js b/web/settings/assets/System-c57d9a74.js similarity index 96% rename from web/settings/assets/System-d604c488.js rename to web/settings/assets/System-c57d9a74.js index d250b8b245..882bf9aa8e 100644 --- a/web/settings/assets/System-d604c488.js +++ b/web/settings/assets/System-c57d9a74.js @@ -1 +1 @@ -import{l as W,_ as S,p as q,$ as C,O as A,a0 as x,F as $}from"./vendor-fortawesome-ad83e535.js";import{C as E}from"./index-cbcca7a0.js";import{_ as U,p as c,k as g,l as y,A as s,L as o,q as a,z as k,u as d,n as v,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";W.add(S,q,C,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",m="master",w=[t,e,m],p=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==m?-1:i.value==m||l.value>i.value?1:l.value(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=f(()=>a("h2",null,"Achtung!",-1)),R=f(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=f(()=>a("br",null,null,-1)),se=f(()=>a("br",null,null,-1)),ne=f(()=>a("br",null,null,-1)),ae=f(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function le(t,e,m,w,p,r){const h=c("openwb-base-button-group-input"),u=c("openwb-base-alert"),l=c("openwb-base-text-input"),i=c("openwb-base-card"),b=c("font-awesome-icon"),_=c("openwb-base-click-button"),B=c("openwb-base-select-input");return g(),y("div",N,[s(u,{subtype:"danger"},{default:o(()=>[O,R,s(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),p.warningAcknowledged?(g(),y("div",Z,[a("form",G,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[s(_,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[d(" Informationen aktualisieren "),s(b,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[s(_,{class:v(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[d(" Update "),s(b,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:v(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(g(),z(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(g(!0),y(F,null,T(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(g(),y("li",{key:V},j(n),1))),128))])]),_:1})):k("v-if",!0),s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[s(_,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[d(" Neustart "),s(b,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[s(_,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[d(" Ausschalten "),s(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" 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})]),a("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[s(_,{class:v(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(u,{subtype:"warning"},{default:o(()=>[d(" 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."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' 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.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(B,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(B,{title:"Tag",options:r.getBranchTagOptions(),modelValue:p.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>p.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):k("v-if",!0)])}const be=U(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default}; +import{l as W,_ as S,p as q,$ as C,O as A,a0 as x,F as $}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-f08a7306.js";import{_ as U,p as c,k as g,l as y,A as s,L as o,q as a,z as k,u as d,n as v,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";W.add(S,q,C,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",m="master",w=[t,e,m],p=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==m?-1:i.value==m||l.value>i.value?1:l.value(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=f(()=>a("h2",null,"Achtung!",-1)),R=f(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=f(()=>a("br",null,null,-1)),se=f(()=>a("br",null,null,-1)),ne=f(()=>a("br",null,null,-1)),ae=f(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function le(t,e,m,w,p,r){const h=c("openwb-base-button-group-input"),u=c("openwb-base-alert"),l=c("openwb-base-text-input"),i=c("openwb-base-card"),b=c("font-awesome-icon"),_=c("openwb-base-click-button"),B=c("openwb-base-select-input");return g(),y("div",N,[s(u,{subtype:"danger"},{default:o(()=>[O,R,s(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),p.warningAcknowledged?(g(),y("div",Z,[a("form",G,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[s(_,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[d(" Informationen aktualisieren "),s(b,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[s(_,{class:v(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[d(" Update "),s(b,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:v(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(g(),z(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(g(!0),y(F,null,T(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(g(),y("li",{key:V},j(n),1))),128))])]),_:1})):k("v-if",!0),s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[s(_,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[d(" Neustart "),s(b,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[s(_,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[d(" Ausschalten "),s(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" 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})]),a("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[s(_,{class:v(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(u,{subtype:"warning"},{default:o(()=>[d(" 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."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' 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.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(B,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(B,{title:"Tag",options:r.getBranchTagOptions(),modelValue:p.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>p.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):k("v-if",!0)])}const be=U(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default}; diff --git a/web/settings/assets/TestingStore-082dc7f3.js b/web/settings/assets/TestingStore-1048cc3b.js similarity index 95% rename from web/settings/assets/TestingStore-082dc7f3.js rename to web/settings/assets/TestingStore-1048cc3b.js index 5ae9632f4e..1366880435 100644 --- a/web/settings/assets/TestingStore-082dc7f3.js +++ b/web/settings/assets/TestingStore-1048cc3b.js @@ -1 +1 @@ -import{C as h}from"./index-cbcca7a0.js";import{S as y}from"./OpenwbSortableList-8561f9a9.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-f08a7306.js";import{S as y}from"./OpenwbSortableList-ac8ac331.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-6ea9f121.js b/web/settings/assets/TimeChargeConfig-3a55662f.js similarity index 84% rename from web/settings/assets/TimeChargeConfig-6ea9f121.js rename to web/settings/assets/TimeChargeConfig-3a55662f.js index 3bb32765f6..ba5e6ad509 100644 --- a/web/settings/assets/TimeChargeConfig-6ea9f121.js +++ b/web/settings/assets/TimeChargeConfig-3a55662f.js @@ -1 +1 @@ -import{C as l}from"./index-cbcca7a0.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-94ac8c48.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-f08a7306.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-1e731d22.js b/web/settings/assets/VehicleConfig-2663db55.js similarity index 94% rename from web/settings/assets/VehicleConfig-1e731d22.js rename to web/settings/assets/VehicleConfig-2663db55.js index e19492da1a..dcdffee0df 100644 --- a/web/settings/assets/VehicleConfig-1e731d22.js +++ b/web/settings/assets/VehicleConfig-2663db55.js @@ -1 +1 @@ -import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-ad83e535.js";import{_ as S,C as ie}from"./index-cbcca7a0.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-94ac8c48.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";import"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-c865f314.js"),["assets/vehicle-c865f314.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-2c5d967c.js"),["assets/vehicle-2c5d967c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-b76d2976.js"),["assets/vehicle-b76d2976.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0247f03c.js"),["assets/vehicle-0247f03c.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-189fc2cb.js"),["assets/vehicle-189fc2cb.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-8bdcc244.js"),["assets/vehicle-8bdcc244.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-6f02cb37.js"),["assets/vehicle-6f02cb37.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-84dd6d0d.js"),["assets/vehicle-84dd6d0d.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-174df8ec.js"),["assets/vehicle-174df8ec.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-316d265a.js"),["assets/vehicle-316d265a.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-0969da15.js"),["assets/vehicle-0969da15.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-839ee3de.js"),["assets/vehicle-839ee3de.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-dc63434e.js","assets/index-cbcca7a0.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-f74618cf.js"),["assets/vehicle-f74618cf.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; +import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-838df0c9.js";import{_ as S,C as ie}from"./index-f08a7306.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-11ffdccd.js"),["assets/vehicle-11ffdccd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-82a4990a.js"),["assets/vehicle-82a4990a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-344c6660.js"),["assets/vehicle-344c6660.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0ea9ae58.js"),["assets/vehicle-0ea9ae58.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-0e30b50e.js"),["assets/vehicle-0e30b50e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-ebf7e590.js"),["assets/vehicle-ebf7e590.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-8cbf750d.js"),["assets/vehicle-8cbf750d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-34ce6cc8.js"),["assets/vehicle-34ce6cc8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-c74f02d0.js"),["assets/vehicle-c74f02d0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-ef079f93.js"),["assets/vehicle-ef079f93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-cbd74ad8.js"),["assets/vehicle-cbd74ad8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-e7320818.js"),["assets/vehicle-e7320818.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-13ef03ae.js","assets/index-f08a7306.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-677f2094.js"),["assets/vehicle-677f2094.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; diff --git a/web/settings/assets/backup_cloud-f1ce5010.js b/web/settings/assets/backup_cloud-6519f98a.js similarity index 96% rename from web/settings/assets/backup_cloud-f1ce5010.js rename to web/settings/assets/backup_cloud-6519f98a.js index 022420779a..ca7ab6e8d0 100644 --- a/web/settings/assets/backup_cloud-f1ce5010.js +++ b/web/settings/assets/backup_cloud-6519f98a.js @@ -1 +1 @@ -import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),C=u("br",null,null,-1),y=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB autorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),C,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),y,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; +import{_ as b,p as d,k as g,l as f,A as t,L as o,u as e,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,n=void 0){this.$emit("update:configuration",{value:i,object:n})},sendSystemCommand(i,n={}){this.$emit("sendCommand",{command:i,data:n})}}},v={class:"backup-cloud-onedrive"},k={class:"small"},w=u("br",null,null,-1),B=u("br",null,null,-1),C=u("br",null,null,-1),y=u("br",null,null,-1);function A(i,n,a,x,z,s){const c=d("openwb-base-heading"),m=d("openwb-base-alert"),r=d("openwb-base-text-input"),p=d("openwb-base-button-input");return g(),f("div",v,[t(c,null,{default:o(()=>[e(" Einstellungen für Onedrive Backup "),u("span",k,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:o(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),w,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(r,{title:"Backupverzeichnis in Onedrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":a.configuration.backuppath,"onUpdate:modelValue":n[0]||(n[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),B,e("Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(r,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":a.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(c,null,{default:o(()=>[e("Zugang zu Onedrive für diese openWB autorisieren")]),_:1}),t(p,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:n[1]||(n[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[e(" Es werden Zugangstokens für Onedrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application. "),C,e(" https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code "),y,e(" https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications ")]),_:1}),t(r,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":a.configuration.authcode},null,8,["model-value"]),t(r,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":a.configuration.authurl},{help:o(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(p,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:n[2]||(n[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const W=b(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{W as default}; diff --git a/web/settings/assets/backup_cloud-e0f3013d.js b/web/settings/assets/backup_cloud-e0e3e868.js similarity index 92% rename from web/settings/assets/backup_cloud-e0f3013d.js rename to web/settings/assets/backup_cloud-e0e3e868.js index fc2a8560b3..e76537d187 100644 --- a/web/settings/assets/backup_cloud-e0f3013d.js +++ b/web/settings/assets/backup_cloud-e0e3e868.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as o,L as l,u as i,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"backup-cloud-nextcloud"},x={class:"small"};function k(n,e,u,C,w,a){const r=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",b,[o(r,null,{default:l(()=>[i(" Einstellungen für NextCloud-Backup Cloud "),_("span",x,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(s,{title:"Cloud-URL",subtype:"host",required:"","model-value":u.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},{help:l(()=>[i(" 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"]),o(s,{title:"Benutzername",subtype:"user","model-value":u.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const B=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-2f8005f2.js b/web/settings/assets/bat-0e028baf.js similarity index 96% rename from web/settings/assets/bat-2f8005f2.js rename to web/settings/assets/bat-0e028baf.js index eb2fbcf9ce..f1414eb413 100644 --- a/web/settings/assets/bat-2f8005f2.js +++ b/web/settings/assets/bat-0e028baf.js @@ -1 +1 @@ -import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; +import{_ as h,p as u,k as p,l as c,A as i,L as r,u as e,q as a,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,t=void 0){this.$emit("update:configuration",{value:s,object:t})}}},b={class:"device-http-bat"},f={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),S=a("br",null,null,-1),x=a("br",null,null,-1),z=a("br",null,null,-1);function Z(s,t,l,L,P,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",b,[i(m,null,{default:r(()=>[e(" Einstellungen für Http Batteriespeicher "),a("span",f,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" 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."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" 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."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const C=h(_,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-904c9172.js b/web/settings/assets/bat-0eeeca9c.js similarity index 85% rename from web/settings/assets/bat-904c9172.js rename to web/settings/assets/bat-0eeeca9c.js index 45e732be06..919c115297 100644 --- a/web/settings/assets/bat-904c9172.js +++ b/web/settings/assets/bat-0eeeca9c.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-3980db8f.js b/web/settings/assets/bat-17d0ebe7.js similarity index 86% rename from web/settings/assets/bat-3980db8f.js rename to web/settings/assets/bat-17d0ebe7.js index db69e69cf2..2eab1a3c13 100644 --- a/web/settings/assets/bat-3980db8f.js +++ b/web/settings/assets/bat-17d0ebe7.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-6fcf71db.js b/web/settings/assets/bat-22a2eeff.js similarity index 86% rename from web/settings/assets/bat-6fcf71db.js rename to web/settings/assets/bat-22a2eeff.js index c24006c1c6..e892c99cb4 100644 --- a/web/settings/assets/bat-6fcf71db.js +++ b/web/settings/assets/bat-22a2eeff.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-studer-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Studer Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f9178e22.js b/web/settings/assets/bat-268a0365.js similarity index 94% rename from web/settings/assets/bat-f9178e22.js rename to web/settings/assets/bat-268a0365.js index 4b716ad31c..f05cbdfff0 100644 --- a/web/settings/assets/bat-f9178e22.js +++ b/web/settings/assets/bat-268a0365.js @@ -1 +1 @@ -import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; +import{_ as m,p as u,k as f,l as g,A as n,L as d,u as o,q as s,x as c}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' 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. '),w,o(" 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"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{P as default}; diff --git a/web/settings/assets/bat-3d2b7acc.js b/web/settings/assets/bat-27edc2dc.js similarity index 88% rename from web/settings/assets/bat-3d2b7acc.js rename to web/settings/assets/bat-27edc2dc.js index 12b06b8e58..2c328ac44d 100644 --- a/web/settings/assets/bat-3d2b7acc.js +++ b/web/settings/assets/bat-27edc2dc.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{k as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-d1af67af.js b/web/settings/assets/bat-39b4c6ba.js similarity index 85% rename from web/settings/assets/bat-d1af67af.js rename to web/settings/assets/bat-39b4c6ba.js index 44165f8fe1..b40184f075 100644 --- a/web/settings/assets/bat-d1af67af.js +++ b/web/settings/assets/bat-39b4c6ba.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-212960fc.js b/web/settings/assets/bat-3af1a10a.js similarity index 94% rename from web/settings/assets/bat-212960fc.js rename to web/settings/assets/bat-3af1a10a.js index fe61d44def..6cb034705e 100644 --- a/web/settings/assets/bat-212960fc.js +++ b/web/settings/assets/bat-3af1a10a.js @@ -1 +1 @@ -import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; +import{_ as u,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"-123",-1),B=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),T=e("br",null,null,-1),q=e("span",{class:"text-info"},"95",-1);function D(a,d,i,E,y,F){const p=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),r=c("openwb-base-alert");return _(),m("div",b,[n(p,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),x]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/imported",1)]),_:1}),B,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),z]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+l(i.componentId)+"/get/soc",1)]),_:1}),N,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),T,t(" Beispiel: "),q])])]),_:1})])}const C=u(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-ac5ee104.js b/web/settings/assets/bat-3f0ca072.js similarity index 87% rename from web/settings/assets/bat-ac5ee104.js rename to web/settings/assets/bat-3f0ca072.js index 6010f5cbb2..ed5cf761ec 100644 --- a/web/settings/assets/bat-ac5ee104.js +++ b/web/settings/assets/bat-3f0ca072.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const q=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-ccba567b.js b/web/settings/assets/bat-46c566c9.js similarity index 86% rename from web/settings/assets/bat-ccba567b.js rename to web/settings/assets/bat-46c566c9.js index fa4a7c0253..0c3051bc97 100644 --- a/web/settings/assets/bat-ccba567b.js +++ b/web/settings/assets/bat-46c566c9.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-8af3358d.js b/web/settings/assets/bat-4b1f210f.js similarity index 86% rename from web/settings/assets/bat-8af3358d.js rename to web/settings/assets/bat-4b1f210f.js index 51c0da0e7a..8713f83f3f 100644 --- a/web/settings/assets/bat-8af3358d.js +++ b/web/settings/assets/bat-4b1f210f.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-80bc8859.js b/web/settings/assets/bat-514861df.js similarity index 87% rename from web/settings/assets/bat-80bc8859.js rename to web/settings/assets/bat-514861df.js index f39ba7fd7c..a3a7a1a2bc 100644 --- a/web/settings/assets/bat-80bc8859.js +++ b/web/settings/assets/bat-514861df.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const C=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-12170e78.js b/web/settings/assets/bat-595642c8.js similarity index 86% rename from web/settings/assets/bat-12170e78.js rename to web/settings/assets/bat-595642c8.js index deec001c7a..e0d56cb380 100644 --- a/web/settings/assets/bat-12170e78.js +++ b/web/settings/assets/bat-595642c8.js @@ -1 +1 @@ -import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; +import{_ as p,p as o,k as c,l as d,A as n,L as a,u as s,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-815fdbb1.js b/web/settings/assets/bat-5b22e35d.js similarity index 88% rename from web/settings/assets/bat-815fdbb1.js rename to web/settings/assets/bat-5b22e35d.js index c29059d65d..7a56796c9e 100644 --- a/web/settings/assets/bat-815fdbb1.js +++ b/web/settings/assets/bat-5b22e35d.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l as p,A as n,L as l,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/bat.vue"]]);export{V as default}; +import{_ as d,p as o,k as c,l as p,A as n,L as l,u as m,q as _,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/bat.vue"]]);export{V as default}; diff --git a/web/settings/assets/bat-180a64ef.js b/web/settings/assets/bat-6c62c4f0.js similarity index 87% rename from web/settings/assets/bat-180a64ef.js rename to web/settings/assets/bat-6c62c4f0.js index ecf82c57ba..aeea08efa9 100644 --- a/web/settings/assets/bat-180a64ef.js +++ b/web/settings/assets/bat-6c62c4f0.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const q=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-3dbfaf1b.js b/web/settings/assets/bat-7500700f.js similarity index 86% rename from web/settings/assets/bat-3dbfaf1b.js rename to web/settings/assets/bat-7500700f.js index ef094f8082..57e6ebcc73 100644 --- a/web/settings/assets/bat-3dbfaf1b.js +++ b/web/settings/assets/bat-7500700f.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default}; diff --git a/web/settings/assets/bat-fd9f4fe4.js b/web/settings/assets/bat-874f748e.js similarity index 86% rename from web/settings/assets/bat-fd9f4fe4.js rename to web/settings/assets/bat-874f748e.js index a11993f1ff..d5606f7edd 100644 --- a/web/settings/assets/bat-fd9f4fe4.js +++ b/web/settings/assets/bat-874f748e.js @@ -1 +1 @@ -import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; +import{_ as c,p as o,k as r,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-f30697e9.js b/web/settings/assets/bat-8c7d349e.js similarity index 86% rename from web/settings/assets/bat-f30697e9.js rename to web/settings/assets/bat-8c7d349e.js index e4923320df..5af2d39614 100644 --- a/web/settings/assets/bat-f30697e9.js +++ b/web/settings/assets/bat-8c7d349e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as s,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-9ff121c5.js b/web/settings/assets/bat-93524d1b.js similarity index 86% rename from web/settings/assets/bat-9ff121c5.js rename to web/settings/assets/bat-93524d1b.js index 32f773d874..4afcc48dd6 100644 --- a/web/settings/assets/bat-9ff121c5.js +++ b/web/settings/assets/bat-93524d1b.js @@ -1 +1 @@ -import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; +import{_ as c,p as o,k as p,l as d,A as n,L as a,u as s,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-f75dd877.js b/web/settings/assets/bat-9894d537.js similarity index 86% rename from web/settings/assets/bat-f75dd877.js rename to web/settings/assets/bat-9894d537.js index 6d8c8c9075..d3b68b5ff1 100644 --- a/web/settings/assets/bat-f75dd877.js +++ b/web/settings/assets/bat-9894d537.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-ba791935.js b/web/settings/assets/bat-aaf46348.js similarity index 90% rename from web/settings/assets/bat-ba791935.js rename to web/settings/assets/bat-aaf46348.js index 2903f3ec33..d075a824d0 100644 --- a/web/settings/assets/bat-ba791935.js +++ b/web/settings/assets/bat-aaf46348.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default}; diff --git a/web/settings/assets/bat-b91f4e63.js b/web/settings/assets/bat-b2de0630.js similarity index 90% rename from web/settings/assets/bat-b91f4e63.js rename to web/settings/assets/bat-b2de0630.js index d8cb8ea4dc..5ad08e372b 100644 --- a/web/settings/assets/bat-b91f4e63.js +++ b/web/settings/assets/bat-b2de0630.js @@ -1 +1 @@ -import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; +import{_ as p,p as n,k as m,l as _,A as o,L as a,u as s,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-3e58123d.js b/web/settings/assets/bat-bbb09227.js similarity index 88% rename from web/settings/assets/bat-3e58123d.js rename to web/settings/assets/bat-bbb09227.js index 2a91e5a279..048346b8c8 100644 --- a/web/settings/assets/bat-3e58123d.js +++ b/web/settings/assets/bat-bbb09227.js @@ -1 +1 @@ -import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{k as default}; +import{_ as d,p as n,k as p,l as r,A as o,L as c,u as _,q as m,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{k as default}; diff --git a/web/settings/assets/bat-4b5ddf83.js b/web/settings/assets/bat-ce4aa848.js similarity index 86% rename from web/settings/assets/bat-4b5ddf83.js rename to web/settings/assets/bat-ce4aa848.js index 73960395ed..019ccae4e5 100644 --- a/web/settings/assets/bat-4b5ddf83.js +++ b/web/settings/assets/bat-ce4aa848.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; +import{_ as d,p as t,k as c,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyisland-bat"},m={class:"small"};function b(e,n,g,h,v,y){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sunny Island Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-4320b5cc.js b/web/settings/assets/bat-d04d3f5b.js similarity index 85% rename from web/settings/assets/bat-4320b5cc.js rename to web/settings/assets/bat-d04d3f5b.js index 369fb80979..6e7bf64c51 100644 --- a/web/settings/assets/bat-4320b5cc.js +++ b/web/settings/assets/bat-d04d3f5b.js @@ -1 +1 @@ -import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; +import{_ as d,p as n,k as r,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-a92f022e.js b/web/settings/assets/bat-d94203e2.js similarity index 86% rename from web/settings/assets/bat-a92f022e.js rename to web/settings/assets/bat-d94203e2.js index 6237fab3e0..c52e9795d4 100644 --- a/web/settings/assets/bat-a92f022e.js +++ b/web/settings/assets/bat-d94203e2.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-557284f3.js b/web/settings/assets/bat-df8e198a.js similarity index 86% rename from web/settings/assets/bat-557284f3.js rename to web/settings/assets/bat-df8e198a.js index 859f6b4c1b..573eabf98d 100644 --- a/web/settings/assets/bat-557284f3.js +++ b/web/settings/assets/bat-df8e198a.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{q as default}; diff --git a/web/settings/assets/bat-cbc92919.js b/web/settings/assets/bat-e62d7b1e.js similarity index 86% rename from web/settings/assets/bat-cbc92919.js rename to web/settings/assets/bat-e62d7b1e.js index 3e76c6784c..9f0356aaa4 100644 --- a/web/settings/assets/bat-cbc92919.js +++ b/web/settings/assets/bat-e62d7b1e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat-cb226603.js b/web/settings/assets/bat-e8cdd332.js similarity index 86% rename from web/settings/assets/bat-cb226603.js rename to web/settings/assets/bat-e8cdd332.js index 97c760edad..07ab66395c 100644 --- a/web/settings/assets/bat-cb226603.js +++ b/web/settings/assets/bat-e8cdd332.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},b={class:"device-sunnyboy-bat"},f={class:"small"};function m(e,n,g,y,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),d("span",f,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-45b559ec.js b/web/settings/assets/bat-ec698ff1.js similarity index 93% rename from web/settings/assets/bat-45b559ec.js rename to web/settings/assets/bat-ec698ff1.js index 5a71bfd621..92a998e72b 100644 --- a/web/settings/assets/bat-45b559ec.js +++ b/web/settings/assets/bat-ec698ff1.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; +import{_ as r,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default}; diff --git a/web/settings/assets/bat-e1949609.js b/web/settings/assets/bat-f2ff4071.js similarity index 93% rename from web/settings/assets/bat-e1949609.js rename to web/settings/assets/bat-f2ff4071.js index b216abc34a..40cd8acb0c 100644 --- a/web/settings/assets/bat-e1949609.js +++ b/web/settings/assets/bat-f2ff4071.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; +import{_ as u,p as t,k as c,l,A as n,L as p,u as m,q as _,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{E as default}; diff --git a/web/settings/assets/bat-61bcf2f8.js b/web/settings/assets/bat-f963a986.js similarity index 85% rename from web/settings/assets/bat-61bcf2f8.js rename to web/settings/assets/bat-f963a986.js index 28302202c1..840a0f185b 100644 --- a/web/settings/assets/bat-61bcf2f8.js +++ b/web/settings/assets/bat-f963a986.js @@ -1 +1 @@ -import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; +import{_ as r,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_api-e58852af.js b/web/settings/assets/bat_api-bbcd36bc.js similarity index 86% rename from web/settings/assets/bat_api-e58852af.js rename to web/settings/assets/bat_api-bbcd36bc.js index 8355ece399..1aa7361804 100644 --- a/web/settings/assets/bat_api-e58852af.js +++ b/web/settings/assets/bat_api-bbcd36bc.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; +import{_ as p,p as n,k as c,l as d,A as a,L as o,u as s,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_modbus-260d9b94.js b/web/settings/assets/bat_modbus-7b1ae23d.js similarity index 86% rename from web/settings/assets/bat_modbus-260d9b94.js rename to web/settings/assets/bat_modbus-7b1ae23d.js index 5968b04745..8d4c01398a 100644 --- a/web/settings/assets/bat_modbus-260d9b94.js +++ b/web/settings/assets/bat_modbus-7b1ae23d.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as a,u as s,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default}; diff --git a/web/settings/assets/bat_smart_energy-817c3655.js b/web/settings/assets/bat_smart_energy-5d29a479.js similarity index 87% rename from web/settings/assets/bat_smart_energy-817c3655.js rename to web/settings/assets/bat_smart_energy-5d29a479.js index ac63323d5e..eec205eb62 100644 --- a/web/settings/assets/bat_smart_energy-817c3655.js +++ b/web/settings/assets/bat_smart_energy-5d29a479.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sunnyboy-bat-smart-energy"},b={class:"small"};function f(e,n,g,y,h,v){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return p(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),d("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default}; diff --git a/web/settings/assets/chargePoint-10f32a1a.js b/web/settings/assets/chargePoint-47a32a91.js similarity index 94% rename from web/settings/assets/chargePoint-10f32a1a.js rename to web/settings/assets/chargePoint-47a32a91.js index 7eeae1a9d7..af7f1d5de4 100644 --- a/web/settings/assets/chargePoint-10f32a1a.js +++ b/web/settings/assets/chargePoint-47a32a91.js @@ -1 +1 @@ -import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; +import{_ as d,p as a,k as p,l as m,A as r,L as c,u as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[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 h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default}; diff --git a/web/settings/assets/chargePoint-a56bc604.js b/web/settings/assets/chargePoint-75b0bdf9.js similarity index 92% rename from web/settings/assets/chargePoint-a56bc604.js rename to web/settings/assets/chargePoint-75b0bdf9.js index 0dcf487e77..e6f7035e89 100644 --- a/web/settings/assets/chargePoint-a56bc604.js +++ b/web/settings/assets/chargePoint-75b0bdf9.js @@ -1 +1 @@ -import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; +import{_ as d,p as a,k as u,l as c,A as l,y as p,L as m,u as f,z as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function h(n,e,t,w,B,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",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"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),p(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:m(()=>[f(' 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"])):_("v-if",!0)])}const x=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-80e648c2.js b/web/settings/assets/chargePoint-792da849.js similarity index 84% rename from web/settings/assets/chargePoint-80e648c2.js rename to web/settings/assets/chargePoint-792da849.js index a80df6148f..d690fb57ed 100644 --- a/web/settings/assets/chargePoint-80e648c2.js +++ b/web/settings/assets/chargePoint-792da849.js @@ -1 +1 @@ -import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; +import{_ as a,p as s,k as p,l as u,A as d}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return p(),u("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-4a124bb9.js b/web/settings/assets/chargePoint-83d3ee27.js similarity index 95% rename from web/settings/assets/chargePoint-4a124bb9.js rename to web/settings/assets/chargePoint-83d3ee27.js index e75e5342ac..4fc0ae01c4 100644 --- a/web/settings/assets/chargePoint-4a124bb9.js +++ b/web/settings/assets/chargePoint-83d3ee27.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; +import{_ as s,p as a,k as p,l,A as u,L as m,u as c}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default}; diff --git a/web/settings/assets/chargePoint-07057692.js b/web/settings/assets/chargePoint-9ab109c4.js similarity index 95% rename from web/settings/assets/chargePoint-07057692.js rename to web/settings/assets/chargePoint-9ab109c4.js index 74208d95d8..6d20f66091 100644 --- a/web/settings/assets/chargePoint-07057692.js +++ b/web/settings/assets/chargePoint-9ab109c4.js @@ -1 +1 @@ -import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; +import{_ as s,p as a,k as p,l,A as r,L as m,u as c}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' 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 v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default}; diff --git a/web/settings/assets/chargePoint-7200a105.js b/web/settings/assets/chargePoint-9f9283b5.js similarity index 98% rename from web/settings/assets/chargePoint-7200a105.js rename to web/settings/assets/chargePoint-9f9283b5.js index 96dfc7ae80..43a39e5e43 100644 --- a/web/settings/assets/chargePoint-7200a105.js +++ b/web/settings/assets/chargePoint-9f9283b5.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; +import{_ as c,p as u,k as p,l as _,A as n,L as l,u as t,q as e,x as s}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),A=e("br",null,null,-1),N=e("br",null,null,-1),Z=e("span",{class:"text-info"},"true",-1),D=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),q=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),A,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),N,t(" Beispiel: "),Z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),D,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),q,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default}; diff --git a/web/settings/assets/commands-516069c3.js b/web/settings/assets/commands-516069c3.js deleted file mode 100644 index 639407fad1..0000000000 --- a/web/settings/assets/commands-516069c3.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,p as r,k as p,l as c,A as d,L as u,u as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.log(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(e=>{console.log("POST response",e.data);const t="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(t,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.log(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.log(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.log("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,o,e,t,_,n){const a=r("openwb-base-button-input");return p(),c("div",m,[d(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/commands-dfab65eb.js b/web/settings/assets/commands-dfab65eb.js new file mode 100644 index 0000000000..175a5957f3 --- /dev/null +++ b/web/settings/assets/commands-dfab65eb.js @@ -0,0 +1 @@ +import{_ as i,p as r,k as p,l as d,A as c,L as u,u as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!
";e.response?(console.error(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,n,e,t,_,o){const a=r("openwb-base-button-input");return p(),d("div",m,[c(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:u(()=>[l(" 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"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-b30c239d.js b/web/settings/assets/counter-00e8bfb9.js similarity index 86% rename from web/settings/assets/counter-b30c239d.js rename to web/settings/assets/counter-00e8bfb9.js index 7f7dfdf3d0..8b5565fe15 100644 --- a/web/settings/assets/counter-b30c239d.js +++ b/web/settings/assets/counter-00e8bfb9.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; +import{_ as c,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),d("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default}; diff --git a/web/settings/assets/counter-82a793a2.js b/web/settings/assets/counter-0524aa8c.js similarity index 86% rename from web/settings/assets/counter-82a793a2.js rename to web/settings/assets/counter-0524aa8c.js index f978233fb3..4d1dea7576 100644 --- a/web/settings/assets/counter-82a793a2.js +++ b/web/settings/assets/counter-0524aa8c.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-7b85a5b2.js b/web/settings/assets/counter-08f8d2f2.js similarity index 86% rename from web/settings/assets/counter-7b85a5b2.js rename to web/settings/assets/counter-08f8d2f2.js index 939dcd124b..81b7c884ca 100644 --- a/web/settings/assets/counter-7b85a5b2.js +++ b/web/settings/assets/counter-08f8d2f2.js @@ -1 +1 @@ -import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; +import{_ as c,p as t,k as u,l as d,A as n,L as a,u as s,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,h,z){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-f322702a.js b/web/settings/assets/counter-09b39d2d.js similarity index 86% rename from web/settings/assets/counter-f322702a.js rename to web/settings/assets/counter-09b39d2d.js index 2c725e9a30..2c29bc736e 100644 --- a/web/settings/assets/counter-f322702a.js +++ b/web/settings/assets/counter-09b39d2d.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-6369ff43.js b/web/settings/assets/counter-0abbb386.js similarity index 90% rename from web/settings/assets/counter-6369ff43.js rename to web/settings/assets/counter-0abbb386.js index db0d8c931d..8061f8b00a 100644 --- a/web/settings/assets/counter-6369ff43.js +++ b/web/settings/assets/counter-0abbb386.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,M,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{D as default}; +import{_ as r,p as o,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-counter"},x={class:"small"};function w(n,e,i,M,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(s,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Zähler "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-d335a007.js b/web/settings/assets/counter-0d09b23e.js similarity index 90% rename from web/settings/assets/counter-d335a007.js rename to web/settings/assets/counter-0d09b23e.js index 5d32805921..ee4413142e 100644 --- a/web/settings/assets/counter-d335a007.js +++ b/web/settings/assets/counter-0d09b23e.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-fb6b0fb9.js b/web/settings/assets/counter-107b4963.js similarity index 86% rename from web/settings/assets/counter-fb6b0fb9.js rename to web/settings/assets/counter-107b4963.js index 51b0eafcd7..b5410fd0ae 100644 --- a/web/settings/assets/counter-fb6b0fb9.js +++ b/web/settings/assets/counter-107b4963.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; +import{_ as c,p as o,k as u,l as p,A as t,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunnyboy-counter"},m={class:"small"};function b(e,n,g,y,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),p("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-816c921e.js b/web/settings/assets/counter-1516cbf4.js similarity index 96% rename from web/settings/assets/counter-816c921e.js rename to web/settings/assets/counter-1516cbf4.js index 6e377493d4..9f6cf209a3 100644 --- a/web/settings/assets/counter-816c921e.js +++ b/web/settings/assets/counter-1516cbf4.js @@ -1 +1 @@ -import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; +import{_ as d,p as c,k as _,l as m,A as n,L as o,u as t,q as e,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),W=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),F=e("br",null,null,-1),P=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),E=e("br",null,null,-1),j=e("br",null,null,-1),A=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),D=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),L=e("br",null,null,-1),M=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function S(a,u,s,H,O,Q){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),p=c("openwb-base-alert");return _(),m("div",f,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,t(" Beispiel: "),B]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),z]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),I,t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),W,t(" Beispiel: "),N]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),w,t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),T,t(" Beispiel: "),y]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),q,t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),F,t(" Beispiel: "),P]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),E,t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),j,t(" Beispiel: "),A]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),D,t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),Z,t(" Beispiel: "),C]),e("li",null,[n(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),L,t(" Beispiel: "),M])])]),_:1})])}const K=d(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{K as default}; diff --git a/web/settings/assets/counter-60655200.js b/web/settings/assets/counter-16bcb8fc.js similarity index 86% rename from web/settings/assets/counter-60655200.js rename to web/settings/assets/counter-16bcb8fc.js index cd01ce739c..9f93447e86 100644 --- a/web/settings/assets/counter-60655200.js +++ b/web/settings/assets/counter-16bcb8fc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-7a7be3d3.js b/web/settings/assets/counter-1ddce36f.js similarity index 86% rename from web/settings/assets/counter-7a7be3d3.js rename to web/settings/assets/counter-1ddce36f.js index beaad797b1..049a6ff015 100644 --- a/web/settings/assets/counter-7a7be3d3.js +++ b/web/settings/assets/counter-1ddce36f.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as a,u as s,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{z as default}; diff --git a/web/settings/assets/counter-af942561.js b/web/settings/assets/counter-2524acf0.js similarity index 88% rename from web/settings/assets/counter-af942561.js rename to web/settings/assets/counter-2524acf0.js index 6805ab1be9..2356dcd250 100644 --- a/web/settings/assets/counter-af942561.js +++ b/web/settings/assets/counter-2524acf0.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as s,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{I as default}; diff --git a/web/settings/assets/counter-70b9e720.js b/web/settings/assets/counter-25d1e220.js similarity index 89% rename from web/settings/assets/counter-70b9e720.js rename to web/settings/assets/counter-25d1e220.js index 391ada4a1a..3f6ab7b419 100644 --- a/web/settings/assets/counter-70b9e720.js +++ b/web/settings/assets/counter-25d1e220.js @@ -1 +1 @@ -import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; +import{_ as m,p as o,k as p,l as _,A as a,L as i,u as t,q as r,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-2a189926.js b/web/settings/assets/counter-25dcea49.js similarity index 87% rename from web/settings/assets/counter-2a189926.js rename to web/settings/assets/counter-25dcea49.js index b861c73281..11e5cbdba0 100644 --- a/web/settings/assets/counter-2a189926.js +++ b/web/settings/assets/counter-25dcea49.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as a,u as s,q as l,x as p}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-4dc3cbd5.js b/web/settings/assets/counter-2fda105e.js similarity index 93% rename from web/settings/assets/counter-4dc3cbd5.js rename to web/settings/assets/counter-2fda105e.js index 027b62ede2..6ef2b58b3f 100644 --- a/web/settings/assets/counter-4dc3cbd5.js +++ b/web/settings/assets/counter-2fda105e.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l,A as n,L as s,u as a,q as p,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-b2081459.js b/web/settings/assets/counter-32007d3e.js similarity index 86% rename from web/settings/assets/counter-b2081459.js rename to web/settings/assets/counter-32007d3e.js index a9faaacd25..6a2562f2ca 100644 --- a/web/settings/assets/counter-b2081459.js +++ b/web/settings/assets/counter-32007d3e.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),u("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-8d4f402a.js b/web/settings/assets/counter-45ecd9ff.js similarity index 86% rename from web/settings/assets/counter-8d4f402a.js rename to web/settings/assets/counter-45ecd9ff.js index cfdd8f17e6..440c9083dd 100644 --- a/web/settings/assets/counter-8d4f402a.js +++ b/web/settings/assets/counter-45ecd9ff.js @@ -1 +1 @@ -import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as u,l as d,A as o,L as s,u as a,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-21f55471.js b/web/settings/assets/counter-4fb4e495.js similarity index 88% rename from web/settings/assets/counter-21f55471.js rename to web/settings/assets/counter-4fb4e495.js index 54bfdac8a3..0877b67ae7 100644 --- a/web/settings/assets/counter-21f55471.js +++ b/web/settings/assets/counter-4fb4e495.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as c,l as d,A as n,L as p,u as _,q as m,x as v}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),m("span",g,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-da58c807.js b/web/settings/assets/counter-57c9333b.js similarity index 86% rename from web/settings/assets/counter-da58c807.js rename to web/settings/assets/counter-57c9333b.js index 08962e40a1..971610add6 100644 --- a/web/settings/assets/counter-da58c807.js +++ b/web/settings/assets/counter-57c9333b.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; +import{_ as r,p as t,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-73783603.js b/web/settings/assets/counter-5cb15a92.js similarity index 86% rename from web/settings/assets/counter-73783603.js rename to web/settings/assets/counter-5cb15a92.js index 5adc1a7640..d81719360d 100644 --- a/web/settings/assets/counter-73783603.js +++ b/web/settings/assets/counter-5cb15a92.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as a,u as s,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-a2c453f6.js b/web/settings/assets/counter-6247163c.js similarity index 94% rename from web/settings/assets/counter-a2c453f6.js rename to web/settings/assets/counter-6247163c.js index 850c055673..c0c13cba9e 100644 --- a/web/settings/assets/counter-a2c453f6.js +++ b/web/settings/assets/counter-6247163c.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l,A as n,L as p,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),u=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(u,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/counter.vue"]]);export{V as default}; +import{_ as d,p as t,k as c,l,A as n,L as p,u as m,q as _,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),u=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(u,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-00ec4a93.js b/web/settings/assets/counter-6264518e.js similarity index 92% rename from web/settings/assets/counter-00ec4a93.js rename to web/settings/assets/counter-6264518e.js index 454d06a30f..fd9e47c3fb 100644 --- a/web/settings/assets/counter-00ec4a93.js +++ b/web/settings/assets/counter-6264518e.js @@ -1 +1 @@ -import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; +import{_ as c,p as r,k as m,l as g,A as t,L as u,u as d,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' 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(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-2365410a.js b/web/settings/assets/counter-71a69a0f.js similarity index 91% rename from web/settings/assets/counter-2365410a.js rename to web/settings/assets/counter-71a69a0f.js index f6fc1cdafb..a2897dc85c 100644 --- a/web/settings/assets/counter-2365410a.js +++ b/web/settings/assets/counter-71a69a0f.js @@ -1 +1 @@ -import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; +import{_ as m,p as a,k as p,l as _,A as n,L as u,u as d,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,i,x,C,r){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" 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(s,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":i.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const D=m(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-6d0620dd.js b/web/settings/assets/counter-75ce0061.js similarity index 97% rename from web/settings/assets/counter-6d0620dd.js rename to web/settings/assets/counter-75ce0061.js index 2722b37d5e..2340defb72 100644 --- a/web/settings/assets/counter-6d0620dd.js +++ b/web/settings/assets/counter-75ce0061.js @@ -1 +1 @@ -import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; +import{_ as h,p as u,k as c,l as g,A as a,L as l,u as e,q as t,x as p}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),A=t("br",null,null,-1),x=t("br",null,null,-1),D=t("br",null,null,-1),L=t("br",null,null,-1);function U(s,n,i,F,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" 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"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" 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."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" 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."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" 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."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),A,e(" 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."),x,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" 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,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const V=h(_,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter-d03b355d.js b/web/settings/assets/counter-83354bca.js similarity index 85% rename from web/settings/assets/counter-d03b355d.js rename to web/settings/assets/counter-83354bca.js index 8220673d78..0974be2dd9 100644 --- a/web/settings/assets/counter-d03b355d.js +++ b/web/settings/assets/counter-83354bca.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-478d9577.js b/web/settings/assets/counter-9513e8db.js similarity index 90% rename from web/settings/assets/counter-478d9577.js rename to web/settings/assets/counter-9513e8db.js index e5aecd1845..026f0641c2 100644 --- a/web/settings/assets/counter-478d9577.js +++ b/web/settings/assets/counter-9513e8db.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; +import{_ as c,p as t,k as p,l as m,A as o,L as i,u as s,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sungrow-counter"},v={class:"small"};function h(n,e,a,w,S,r){const u=t("openwb-base-heading"),d=t("openwb-base-select-input");return p(),m("div",b,[o(u,null,{default:i(()=>[s(" Einstellungen für Sungrow Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.version"))},{help:i(()=>[s(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["options","model-value"])])}const D=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{D as default}; diff --git a/web/settings/assets/counter-fbf1efa1.js b/web/settings/assets/counter-969297fa.js similarity index 85% rename from web/settings/assets/counter-fbf1efa1.js rename to web/settings/assets/counter-969297fa.js index 437ec022b5..78d0ae0b99 100644 --- a/web/settings/assets/counter-fbf1efa1.js +++ b/web/settings/assets/counter-969297fa.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-f56715cd.js b/web/settings/assets/counter-9a41f79b.js similarity index 89% rename from web/settings/assets/counter-f56715cd.js rename to web/settings/assets/counter-9a41f79b.js index 0789f7aac9..fff671027c 100644 --- a/web/settings/assets/counter-f56715cd.js +++ b/web/settings/assets/counter-9a41f79b.js @@ -1 +1 @@ -import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; +import{_ as u,p as n,k as l,l as d,A as r,L as s,u as t,q as a,x as p}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-1905ec77.js b/web/settings/assets/counter-9a77fa00.js similarity index 90% rename from web/settings/assets/counter-1905ec77.js rename to web/settings/assets/counter-9a77fa00.js index be423eae70..8793235fac 100644 --- a/web/settings/assets/counter-1905ec77.js +++ b/web/settings/assets/counter-9a77fa00.js @@ -1 +1 @@ -import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; +import{_ as l,p as o,k as c,l as p,A as u,L as m,u as _,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-eab5abf7.js b/web/settings/assets/counter-9c24dc5c.js similarity index 87% rename from web/settings/assets/counter-eab5abf7.js rename to web/settings/assets/counter-9c24dc5c.js index c658d8811e..4d1a514b54 100644 --- a/web/settings/assets/counter-eab5abf7.js +++ b/web/settings/assets/counter-9c24dc5c.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; +import{_ as d,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const B=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-c0f3f4ac.js b/web/settings/assets/counter-a13ecb51.js similarity index 90% rename from web/settings/assets/counter-c0f3f4ac.js rename to web/settings/assets/counter-a13ecb51.js index 6262fffc03..8b39fea13e 100644 --- a/web/settings/assets/counter-c0f3f4ac.js +++ b/web/settings/assets/counter-a13ecb51.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; +import{_ as l,p as t,k as p,l as m,A as o,L as i,u as r,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[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 C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default}; diff --git a/web/settings/assets/counter-9097a073.js b/web/settings/assets/counter-a3e434aa.js similarity index 86% rename from web/settings/assets/counter-9097a073.js rename to web/settings/assets/counter-a3e434aa.js index 82e303d217..7c70d0aabf 100644 --- a/web/settings/assets/counter-9097a073.js +++ b/web/settings/assets/counter-a3e434aa.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as n,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-18fd3233.js b/web/settings/assets/counter-b09d3ede.js similarity index 90% rename from web/settings/assets/counter-18fd3233.js rename to web/settings/assets/counter-b09d3ede.js index 930c8d9c35..f50bce910a 100644 --- a/web/settings/assets/counter-18fd3233.js +++ b/web/settings/assets/counter-b09d3ede.js @@ -1 +1 @@ -import{_ as u,p as r,k as c,l as d,A as s,L as a,u as e,q as o,x as p}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},m={class:"device-solar_log-counter"},h={class:"small"},f=o("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),o("br")],-1),g=o("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(t,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",m,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),o("span",h,"(Modul: "+p(t.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[f,e(" 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 "),g,e(". ")]),_:1})])}const x=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; +import{_ as u,p as r,k as c,l as d,A as s,L as a,u as e,q as o,x as p}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},m={class:"device-solar_log-counter"},h={class:"small"},f=o("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass kein Lastmanagement möglich ist."),o("br")],-1),g=o("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(t,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",m,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),o("span",h,"(Modul: "+p(t.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[f,e(" 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 "),g,e(". ")]),_:1})])}const x=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-ad208981.js b/web/settings/assets/counter-b4f1d52c.js similarity index 85% rename from web/settings/assets/counter-ad208981.js rename to web/settings/assets/counter-b4f1d52c.js index 0a31e209f2..1ce1ddecfa 100644 --- a/web/settings/assets/counter-ad208981.js +++ b/web/settings/assets/counter-b4f1d52c.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as p,l as u,A as n,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-46b207f3.js b/web/settings/assets/counter-b804ace4.js similarity index 91% rename from web/settings/assets/counter-46b207f3.js rename to web/settings/assets/counter-b804ace4.js index b195691698..ef37e159c7 100644 --- a/web/settings/assets/counter-46b207f3.js +++ b/web/settings/assets/counter-b804ace4.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as a,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-powerfox-counter"},h={class:"small"},w=a("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);function v(n,e,s,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Zähler "),a("span",h,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":s.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),w,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{B as default}; diff --git a/web/settings/assets/counter-3df9b0e7.js b/web/settings/assets/counter-c9dc9c81.js similarity index 88% rename from web/settings/assets/counter-3df9b0e7.js rename to web/settings/assets/counter-c9dc9c81.js index 8d0b95711e..be8ec3b14a 100644 --- a/web/settings/assets/counter-3df9b0e7.js +++ b/web/settings/assets/counter-c9dc9c81.js @@ -1 +1 @@ -import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; +import{_ as d,p as t,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-57df9eec.js b/web/settings/assets/counter-cd290a98.js similarity index 86% rename from web/settings/assets/counter-57df9eec.js rename to web/settings/assets/counter-cd290a98.js index 27bcf0f7c4..8cbe1a2f77 100644 --- a/web/settings/assets/counter-57df9eec.js +++ b/web/settings/assets/counter-cd290a98.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-2e4fa5c2.js b/web/settings/assets/counter-cf4834fd.js similarity index 86% rename from web/settings/assets/counter-2e4fa5c2.js rename to web/settings/assets/counter-cf4834fd.js index b35644d58b..47dd0037a0 100644 --- a/web/settings/assets/counter-2e4fa5c2.js +++ b/web/settings/assets/counter-cf4834fd.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter-fcc6cfc8.js b/web/settings/assets/counter-d1489ce8.js similarity index 86% rename from web/settings/assets/counter-fcc6cfc8.js rename to web/settings/assets/counter-d1489ce8.js index c8bc40bb41..7e699603e4 100644 --- a/web/settings/assets/counter-fcc6cfc8.js +++ b/web/settings/assets/counter-d1489ce8.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/counter-77841659.js b/web/settings/assets/counter-e15f2c06.js similarity index 86% rename from web/settings/assets/counter-77841659.js rename to web/settings/assets/counter-e15f2c06.js index 89d12a83c3..009e42c869 100644 --- a/web/settings/assets/counter-77841659.js +++ b/web/settings/assets/counter-e15f2c06.js @@ -1 +1 @@ -import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; +import{_ as r,p as n,k as l,l as p,A as o,L as s,u as a,q as u,x as d}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),u("span",m,"(Modul: "+d(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{q as default}; diff --git a/web/settings/assets/counter-46a15c2b.js b/web/settings/assets/counter-e3807695.js similarity index 96% rename from web/settings/assets/counter-46a15c2b.js rename to web/settings/assets/counter-e3807695.js index a33b0a7594..cd1f32fcca 100644 --- a/web/settings/assets/counter-46a15c2b.js +++ b/web/settings/assets/counter-e3807695.js @@ -1 +1 @@ -import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; +import{_ as g,p as d,k as p,l as _,A as n,L as u,u as r,q as s,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[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. '),j,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 darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" 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}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const y=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{y as default}; diff --git a/web/settings/assets/counter-df3e561f.js b/web/settings/assets/counter-e7921fa4.js similarity index 87% rename from web/settings/assets/counter-df3e561f.js rename to web/settings/assets/counter-e7921fa4.js index 3f8614da99..b11d2f34ac 100644 --- a/web/settings/assets/counter-df3e561f.js +++ b/web/settings/assets/counter-e7921fa4.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-5b0b9661.js b/web/settings/assets/counter-ed28bc4b.js similarity index 88% rename from web/settings/assets/counter-5b0b9661.js rename to web/settings/assets/counter-ed28bc4b.js index 37f5fdbaba..2f0cdcf241 100644 --- a/web/settings/assets/counter-5b0b9661.js +++ b/web/settings/assets/counter-ed28bc4b.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; +import{_ as c,p as n,k as d,l as u,A as o,L as s,u as a,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" 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 x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default}; diff --git a/web/settings/assets/counter-1c5a2313.js b/web/settings/assets/counter-fca60eb6.js similarity index 86% rename from web/settings/assets/counter-1c5a2313.js rename to web/settings/assets/counter-fca60eb6.js index 1709da4472..7d5659770c 100644 --- a/web/settings/assets/counter-1c5a2313.js +++ b/web/settings/assets/counter-fca60eb6.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default}; diff --git a/web/settings/assets/counter_s0-0068172e.js b/web/settings/assets/counter_s0-ba7ae169.js similarity index 86% rename from web/settings/assets/counter_s0-0068172e.js rename to web/settings/assets/counter_s0-ba7ae169.js index fef736146a..33abaade46 100644 --- a/web/settings/assets/counter_s0-0068172e.js +++ b/web/settings/assets/counter_s0-ba7ae169.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; +import{_ as c,p as o,k as u,l as d,A as t,L as s,u as a,q as p,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default}; diff --git a/web/settings/assets/counter_sm-802e0059.js b/web/settings/assets/counter_sm-ccecb663.js similarity index 96% rename from web/settings/assets/counter_sm-802e0059.js rename to web/settings/assets/counter_sm-ccecb663.js index db07db686c..e0c49161d8 100644 --- a/web/settings/assets/counter_sm-802e0059.js +++ b/web/settings/assets/counter_sm-ccecb663.js @@ -1 +1 @@ -import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; +import{_ as p,p as o,k as m,l as _,A as a,L as s,u,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fronius-counter-sm"},h={class:"small"};function w(n,e,i,x,V,r){const l=o("openwb-base-heading"),d=o("openwb-base-number-input"),c=o("openwb-base-select-input");return m(),_("div",v,[a(l,null,{default:s(()=>[u(" Einstellungen für Fronius SmartMeter "),f("span",h,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),a(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":i.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.variant"))},{help:s(()=>[u(" 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"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-9114b4f4.js b/web/settings/assets/device-0be142e9.js similarity index 95% rename from web/settings/assets/device-9114b4f4.js rename to web/settings/assets/device-0be142e9.js index 694217ef9d..05a628df65 100644 --- a/web/settings/assets/device-9114b4f4.js +++ b/web/settings/assets/device-0be142e9.js @@ -1 +1 @@ -import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; +import{_ as b,p as o,k as h,l as g,A as s,L as u,u as t,q as n,x as i}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,C,y,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"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":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie 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:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["options","model-value"])])}const E=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-3c66abac.js b/web/settings/assets/device-0ec37631.js similarity index 89% rename from web/settings/assets/device-3c66abac.js rename to web/settings/assets/device-0ec37631.js index 34b1dfc41e..1104bea5f4 100644 --- a/web/settings/assets/device-3c66abac.js +++ b/web/settings/assets/device-0ec37631.js @@ -1 +1 @@ -import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; +import{_ as p,p as t,k as l,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(o,e,i,h,q,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:_(()=>[m(" Einstellungen für openWB-Flex "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"","model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-c49a0ced.js b/web/settings/assets/device-1034f28e.js similarity index 94% rename from web/settings/assets/device-c49a0ced.js rename to web/settings/assets/device-1034f28e.js index feedad292a..34a8645f49 100644 --- a/web/settings/assets/device-c49a0ced.js +++ b/web/settings/assets/device-1034f28e.js @@ -1 +1 @@ -import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; +import{_ as r,p as u,k as p,l,A as n,L as c,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return p(),l("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const C=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-0c072e3b.js b/web/settings/assets/device-11080b2d.js similarity index 91% rename from web/settings/assets/device-0c072e3b.js rename to web/settings/assets/device-11080b2d.js index 12ae12e2d9..6d956204d5 100644 --- a/web/settings/assets/device-0c072e3b.js +++ b/web/settings/assets/device-11080b2d.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as d,u as r,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-c5eaae23.js b/web/settings/assets/device-1548812a.js similarity index 89% rename from web/settings/assets/device-c5eaae23.js rename to web/settings/assets/device-1548812a.js index 9a9f916647..23b9d732e1 100644 --- a/web/settings/assets/device-c5eaae23.js +++ b/web/settings/assets/device-1548812a.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as a,u as s,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-enphase"},g={class:"small"};function w(t,e,i,x,y,r){const p=n("openwb-base-heading"),u=n("openwb-base-alert"),d=n("openwb-base-text-input");return _(),m("div",v,[o(p,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway "),f("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Geräte mit Firmware-Versionen 7.0 oder neuer werden derzeit nicht unterstützt. ")]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.hostname"))},null,8,["model-value"])])}const q=l(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-5442f3f8.js b/web/settings/assets/device-1a05e97a.js similarity index 89% rename from web/settings/assets/device-5442f3f8.js rename to web/settings/assets/device-1a05e97a.js index a267fcb9ca..14555751db 100644 --- a/web/settings/assets/device-5442f3f8.js +++ b/web/settings/assets/device-1a05e97a.js @@ -1 +1 @@ -import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; +import{_ as l,p as t,k as p,l as c,A as a,L as _,u as m,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-goodwe"},w={class:"small"};function x(o,e,i,h,C,s){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),r=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:_(()=>[m(" Einstellungen für GoodWe "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Modbus ID","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-2b476100.js b/web/settings/assets/device-246d5e43.js similarity index 87% rename from web/settings/assets/device-2b476100.js rename to web/settings/assets/device-246d5e43.js index 5a9b7ad084..466ed6dafc 100644 --- a/web/settings/assets/device-2b476100.js +++ b/web/settings/assets/device-246d5e43.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-varta"},g={class:"small"};function h(t,e,a,x,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Varta "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-23fbc413.js b/web/settings/assets/device-28066804.js similarity index 90% rename from web/settings/assets/device-23fbc413.js rename to web/settings/assets/device-28066804.js index 58c6ee2b36..124312c519 100644 --- a/web/settings/assets/device-23fbc413.js +++ b/web/settings/assets/device-28066804.js @@ -1 +1 @@ -import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; +import{_ as u,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-kostalplenticore"},v={class:"small"};function w(t,e,i,x,K,r){const l=n("openwb-base-heading"),d=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),m("div",h,[o(l,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore "),f("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const E=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-84c0ab33.js b/web/settings/assets/device-3330c205.js similarity index 90% rename from web/settings/assets/device-84c0ab33.js rename to web/settings/assets/device-3330c205.js index f612ae973a..40ab131990 100644 --- a/web/settings/assets/device-84c0ab33.js +++ b/web/settings/assets/device-3330c205.js @@ -1 +1 @@ -import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; +import{_ as l,p as u,k as p,l as m,A as t,L as c,u as _,q as f,x as v}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const h=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-060ee4fd.js b/web/settings/assets/device-3711a41a.js similarity index 85% rename from web/settings/assets/device-060ee4fd.js rename to web/settings/assets/device-3711a41a.js index 5be779b1dc..557be142ce 100644 --- a/web/settings/assets/device-060ee4fd.js +++ b/web/settings/assets/device-3711a41a.js @@ -1 +1 @@ -import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; +import{_ as r,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const k=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-c553c1ee.js b/web/settings/assets/device-3ddc3e24.js similarity index 87% rename from web/settings/assets/device-c553c1ee.js rename to web/settings/assets/device-3ddc3e24.js index 6b2900d195..f32acce687 100644 --- a/web/settings/assets/device-c553c1ee.js +++ b/web/settings/assets/device-3ddc3e24.js @@ -1 +1 @@ -import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; +import{_ as r,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-91520693.js b/web/settings/assets/device-3f5084e0.js similarity index 87% rename from web/settings/assets/device-91520693.js rename to web/settings/assets/device-3f5084e0.js index fd9910526e..b1855dc34b 100644 --- a/web/settings/assets/device-91520693.js +++ b/web/settings/assets/device-3f5084e0.js @@ -1 +1 @@ -import{_ as d,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger"},v={class:"small"};function w(t,e,a,h,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Huawei SmartLogger "),m("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/device.vue"]]);export{C as default}; +import{_ as d,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger"},v={class:"small"};function w(t,e,a,h,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Huawei SmartLogger "),m("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-7fbce287.js b/web/settings/assets/device-3fe4b5f3.js similarity index 86% rename from web/settings/assets/device-7fbce287.js rename to web/settings/assets/device-3fe4b5f3.js index eaad5563d4..003addbf60 100644 --- a/web/settings/assets/device-7fbce287.js +++ b/web/settings/assets/device-3fe4b5f3.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as c,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-5c559131.js b/web/settings/assets/device-4005e628.js similarity index 85% rename from web/settings/assets/device-5c559131.js rename to web/settings/assets/device-4005e628.js index a8a5cb28c9..f102483d68 100644 --- a/web/settings/assets/device-5c559131.js +++ b/web/settings/assets/device-4005e628.js @@ -1 +1 @@ -import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; +import{_ as c,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-cdede991.js b/web/settings/assets/device-49750792.js similarity index 88% rename from web/settings/assets/device-cdede991.js rename to web/settings/assets/device-49750792.js index 487b23fe1a..7c503c5b08 100644 --- a/web/settings/assets/device-cdede991.js +++ b/web/settings/assets/device-49750792.js @@ -1 +1 @@ -import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; +import{_ as l,p as s,k as c,l as p,A as o,L as a,u as n,q as i,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-mqtt"},f={class:"small"},b=i("br",null,null,-1);function g(e,t,v,h,w,k){const r=s("openwb-base-heading"),d=s("openwb-base-alert");return c(),p("div",m,[o(r,null,{default:a(()=>[n(" Einstellungen für MQTT "),i("span",f,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an spezielle Topics im Broker gesendet werden."),b,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 $=l(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-94f0ef9b.js b/web/settings/assets/device-4a98b784.js similarity index 88% rename from web/settings/assets/device-94f0ef9b.js rename to web/settings/assets/device-4a98b784.js index 71ef7b5369..1682927efe 100644 --- a/web/settings/assets/device-94f0ef9b.js +++ b/web/settings/assets/device-4a98b784.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as _,A as n,L as s,u as a,q as g,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-eed5fccd.js b/web/settings/assets/device-4c8d99b2.js similarity index 90% rename from web/settings/assets/device-eed5fccd.js rename to web/settings/assets/device-4c8d99b2.js index 43fe5ca4d2..4d1e0d5738 100644 --- a/web/settings/assets/device-eed5fccd.js +++ b/web/settings/assets/device-4c8d99b2.js @@ -1 +1 @@ -import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; +import{_ as c,p as t,k as m,l as _,A as a,L as u,u as d,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function w(o,e,i,h,q,s){const r=t("openwb-base-heading"),l=t("openwb-base-text-input"),p=t("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für Solax "),b("span",x,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Für Gen3 ID=0, für Gen4 meistens > 2. ")]),_:1},8,["model-value"])])}const B=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-03a0ce90.js b/web/settings/assets/device-509acf7c.js similarity index 92% rename from web/settings/assets/device-03a0ce90.js rename to web/settings/assets/device-509acf7c.js index 406a712114..efedc872a3 100644 --- a/web/settings/assets/device-03a0ce90.js +++ b/web/settings/assets/device-509acf7c.js @@ -1 +1 @@ -import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; +import{_ as c,p as i,k as l,l as p,A as s,L as m,u as f,q as _,x as v,y as g,z as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const w={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},x={class:"device-alphaess"},h={class:"small"};function V(n,e,o,S,B,a){const d=i("openwb-base-heading"),u=i("openwb-base-select-input"),r=i("openwb-base-text-input");return l(),p("div",x,[s(d,null,{default:m(()=>[f(" Einstellungen für Alpha ESS "),_("span",h,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),s(u,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(l(),g(r,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):b("v-if",!0),s(u,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const k=c(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-9f8cfcd3.js b/web/settings/assets/device-52389f33.js similarity index 87% rename from web/settings/assets/device-9f8cfcd3.js rename to web/settings/assets/device-52389f33.js index 796be96bcd..58935203b4 100644 --- a/web/settings/assets/device-9f8cfcd3.js +++ b/web/settings/assets/device-52389f33.js @@ -1 +1 @@ -import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; +import{_ as u,p as t,k as l,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),p("div",v,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-efcbb283.js b/web/settings/assets/device-5b3585a3.js similarity index 91% rename from web/settings/assets/device-efcbb283.js rename to web/settings/assets/device-5b3585a3.js index a35fb715d6..928ba3fece 100644 --- a/web/settings/assets/device-efcbb283.js +++ b/web/settings/assets/device-5b3585a3.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; +import{_ as l,p as d,k as r,l as p,A as t,L as c,u as m,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[t(u,null,{default:c(()=>[m(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-9f1d6204.js b/web/settings/assets/device-6422d305.js similarity index 89% rename from web/settings/assets/device-9f1d6204.js rename to web/settings/assets/device-6422d305.js index 6ec69ae43d..cbe5fc2624 100644 --- a/web/settings/assets/device-9f1d6204.js +++ b/web/settings/assets/device-6422d305.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},y={class:"device-sunnyboy"},g={class:"small"};function w(t,e,i,h,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),p=n("openwb-base-text-input");return _(),m("div",y,[o(d,null,{default:s(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower "),b("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const S=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-ae9d7f6e.js b/web/settings/assets/device-69672183.js similarity index 92% rename from web/settings/assets/device-ae9d7f6e.js rename to web/settings/assets/device-69672183.js index 3b865577fd..43d487441e 100644 --- a/web/settings/assets/device-ae9d7f6e.js +++ b/web/settings/assets/device-69672183.js @@ -1 +1 @@ -import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; +import{_ as c,p as t,k as _,l as b,A as o,L as s,u as d,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-sungrow"},x={class:"small"};function h(a,e,i,q,C,u){const l=t("openwb-base-heading"),p=t("openwb-base-alert"),m=t("openwb-base-text-input"),r=t("openwb-base-number-input");return _(),b("div",w,[o(l,null,{default:s(()=>[d(" Einstellungen für Sungrow "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[d(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongels aktuell halten. ")]),_:1}),o(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),o(r,{title:"Geräteadresse",required:"",min:1,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const S=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{S as default}; diff --git a/web/settings/assets/device-d971bed6.js b/web/settings/assets/device-72498906.js similarity index 87% rename from web/settings/assets/device-d971bed6.js rename to web/settings/assets/device-72498906.js index 11c4f382da..6a8bca9997 100644 --- a/web/settings/assets/device-d971bed6.js +++ b/web/settings/assets/device-72498906.js @@ -1 +1 @@ -import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; +import{_ as l,p as t,k as u,l as p,A as n,L as c,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-11808744.js b/web/settings/assets/device-7e999eff.js similarity index 89% rename from web/settings/assets/device-11808744.js rename to web/settings/assets/device-7e999eff.js index 886cb9257f..ab024b7c25 100644 --- a/web/settings/assets/device-11808744.js +++ b/web/settings/assets/device-7e999eff.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as a,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens-sentron"},h={class:"small"};function w(t,e,i,x,S,r){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(d,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-554ac70d.js b/web/settings/assets/device-81934251.js similarity index 85% rename from web/settings/assets/device-554ac70d.js rename to web/settings/assets/device-81934251.js index 3842b88b20..72fb67ea82 100644 --- a/web/settings/assets/device-554ac70d.js +++ b/web/settings/assets/device-81934251.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as u,A as o,L as s,u as a,q as d,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default}; diff --git a/web/settings/assets/device-2fc1a957.js b/web/settings/assets/device-8271ebf3.js similarity index 89% rename from web/settings/assets/device-2fc1a957.js rename to web/settings/assets/device-8271ebf3.js index 1597914acf..35c22388f3 100644 --- a/web/settings/assets/device-2fc1a957.js +++ b/web/settings/assets/device-8271ebf3.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as a,L as m,u as _,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceQCellls",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-qcells"},w={class:"small"};function x(n,e,s,C,h,i){const d=t("openwb-base-heading"),u=t("openwb-base-text-input"),l=t("openwb-base-number-input");return p(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-34d66ae0.js b/web/settings/assets/device-84570e67.js similarity index 87% rename from web/settings/assets/device-34d66ae0.js rename to web/settings/assets/device-84570e67.js index 236939d0ab..8a823c8b35 100644 --- a/web/settings/assets/device-34d66ae0.js +++ b/web/settings/assets/device-84570e67.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-victron"},g={class:"small"};function h(t,e,s,x,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-text-input");return u(),p("div",b,[n(a,null,{default:l(()=>[_(" Einstellungen für Victron "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-e88cb248.js b/web/settings/assets/device-8715b56d.js similarity index 89% rename from web/settings/assets/device-e88cb248.js rename to web/settings/assets/device-8715b56d.js index da761fb243..56c40f92f9 100644 --- a/web/settings/assets/device-e88cb248.js +++ b/web/settings/assets/device-8715b56d.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-10d2c4c1.js b/web/settings/assets/device-895b9b05.js similarity index 87% rename from web/settings/assets/device-10d2c4c1.js rename to web/settings/assets/device-895b9b05.js index 3534d08ee6..43a691c5f8 100644 --- a/web/settings/assets/device-10d2c4c1.js +++ b/web/settings/assets/device-895b9b05.js @@ -1 +1 @@ -import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; +import{_ as r,p as o,k as u,l as p,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-48b82d13.js b/web/settings/assets/device-9444169d.js similarity index 87% rename from web/settings/assets/device-48b82d13.js rename to web/settings/assets/device-9444169d.js index 9c26f4a08d..035fe86c79 100644 --- a/web/settings/assets/device-48b82d13.js +++ b/web/settings/assets/device-9444169d.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-71f6eb4f.js b/web/settings/assets/device-95bb6ed4.js similarity index 89% rename from web/settings/assets/device-71f6eb4f.js rename to web/settings/assets/device-95bb6ed4.js index 8324d75d3b..cdce175734 100644 --- a/web/settings/assets/device-71f6eb4f.js +++ b/web/settings/assets/device-95bb6ed4.js @@ -1 +1 @@ -import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; +import{_ as d,p as u,k as l,l as p,A as n,L as c,u as m,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,B,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const h=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{h as default}; diff --git a/web/settings/assets/device-ff4b5125.js b/web/settings/assets/device-a2d2f22a.js similarity index 87% rename from web/settings/assets/device-ff4b5125.js rename to web/settings/assets/device-a2d2f22a.js index 5146d1c67b..6dddfc6080 100644 --- a/web/settings/assets/device-ff4b5125.js +++ b/web/settings/assets/device-a2d2f22a.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; +import{_ as u,p as n,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-janitza"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Janitza "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const z=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{z as default}; diff --git a/web/settings/assets/device-e2dad607.js b/web/settings/assets/device-a394c36e.js similarity index 87% rename from web/settings/assets/device-e2dad607.js rename to web/settings/assets/device-a394c36e.js index f108b49ff4..6e32b20767 100644 --- a/web/settings/assets/device-e2dad607.js +++ b/web/settings/assets/device-a394c36e.js @@ -1 +1 @@ -import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; +import{_ as p,p as t,k as u,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-saxpower"},v={class:"small"};function x(o,e,a,w,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return u(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Saxpower "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const C=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-f186e4bf.js b/web/settings/assets/device-a81f5544.js similarity index 89% rename from web/settings/assets/device-f186e4bf.js rename to web/settings/assets/device-a81f5544.js index 740c2d0345..6d444349b6 100644 --- a/web/settings/assets/device-f186e4bf.js +++ b/web/settings/assets/device-a81f5544.js @@ -1 +1 @@ -import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; +import{_ as p,p as n,k as _,l as f,A as o,L as s,u as a,q as m,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const B=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-1ebd188c.js b/web/settings/assets/device-a88fff7e.js similarity index 85% rename from web/settings/assets/device-1ebd188c.js rename to web/settings/assets/device-a88fff7e.js index 012fe5679e..84996cab92 100644 --- a/web/settings/assets/device-1ebd188c.js +++ b/web/settings/assets/device-a88fff7e.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default}; diff --git a/web/settings/assets/device-24f0a9e0.js b/web/settings/assets/device-ac3bc5b3.js similarity index 90% rename from web/settings/assets/device-24f0a9e0.js rename to web/settings/assets/device-ac3bc5b3.js index 5cf3a33359..af45027b7b 100644 --- a/web/settings/assets/device-24f0a9e0.js +++ b/web/settings/assets/device-ac3bc5b3.js @@ -1 +1 @@ -import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; +import{_ as l,p as d,k as r,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,C,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-f581669c.js b/web/settings/assets/device-b1434489.js similarity index 88% rename from web/settings/assets/device-f581669c.js rename to web/settings/assets/device-b1434489.js index 91d25845b1..18c00979e4 100644 --- a/web/settings/assets/device-f581669c.js +++ b/web/settings/assets/device-b1434489.js @@ -1 +1 @@ -import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; +import{_ as l,p as t,k as _,l as m,A as n,L as s,u as a,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerdog"},w={class:"small"};function h(o,e,i,x,C,d){const r=t("openwb-base-heading"),p=t("openwb-base-alert"),u=t("openwb-base-text-input");return _(),m("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Powerdog "),f("span",w,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[a(" ModbusTCP muss aktiviert sein. ")]),_:1}),n(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-2a7fcdcd.js b/web/settings/assets/device-bf858f4d.js similarity index 88% rename from web/settings/assets/device-2a7fcdcd.js rename to web/settings/assets/device-bf858f4d.js index 900d341b65..54e96be01d 100644 --- a/web/settings/assets/device-2a7fcdcd.js +++ b/web/settings/assets/device-bf858f4d.js @@ -1 +1 @@ -import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; +import{_ as l,p as n,k as _,l as m,A as o,L as s,u as i,q as f,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-siemens"},h={class:"small"};function w(t,e,a,x,S,d){const r=n("openwb-base-heading"),p=n("openwb-base-alert"),u=n("openwb-base-text-input");return _(),m("div",v,[o(r,null,{default:s(()=>[i(" Einstellungen für Siemens "),f("span",h,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[i(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),o(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-7700d0d1.js b/web/settings/assets/device-bfd97b22.js similarity index 91% rename from web/settings/assets/device-7700d0d1.js rename to web/settings/assets/device-bfd97b22.js index 38e8c2c868..d1ed6d4ed4 100644 --- a/web/settings/assets/device-7700d0d1.js +++ b/web/settings/assets/device-bfd97b22.js @@ -1 +1 @@ -import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; +import{_ as m,p as o,k as _,l as b,A as i,L as u,u as a,q as d,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-huawei"},h={class:"small"},w=d("br",null,null,-1);function x(n,e,s,D,I,r){const l=o("openwb-base-heading"),c=o("openwb-base-text-input"),p=o("openwb-base-number-input");return _(),b("div",v,[i(l,null,{default:u(()=>[a(" Einstellungen für Huawei "),d("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Modbus ID","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.modbus_id"))},{help:u(()=>[a(' 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.'),w,a(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-c0377afe.js b/web/settings/assets/device-c365f5a7.js similarity index 87% rename from web/settings/assets/device-c0377afe.js rename to web/settings/assets/device-c365f5a7.js index 9f25fa773b..7197e8bdcf 100644 --- a/web/settings/assets/device-c0377afe.js +++ b/web/settings/assets/device-c365f5a7.js @@ -1 +1 @@ -import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; +import{_ as u,p as t,k as p,l as c,A as n,L as l,u as _,q as m,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-333a1847.js b/web/settings/assets/device-c7f104f4.js similarity index 91% rename from web/settings/assets/device-333a1847.js rename to web/settings/assets/device-c7f104f4.js index b2bf3c4d98..2ebd87d817 100644 --- a/web/settings/assets/device-333a1847.js +++ b/web/settings/assets/device-c7f104f4.js @@ -1 +1 @@ -import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; +import{_ as m,p as t,k as _,l as f,A as o,L as i,u as s,q as r,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function S(n,e,a,y,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" 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}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const D=m(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{D as default}; diff --git a/web/settings/assets/device-44e40f8a.js b/web/settings/assets/device-cc75d571.js similarity index 90% rename from web/settings/assets/device-44e40f8a.js rename to web/settings/assets/device-cc75d571.js index 9a21c57676..fd0da022a0 100644 --- a/web/settings/assets/device-44e40f8a.js +++ b/web/settings/assets/device-cc75d571.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as p,A as o,L as c,u as m,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,x,y,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-f3520fbc.js b/web/settings/assets/device-d3107147.js similarity index 89% rename from web/settings/assets/device-f3520fbc.js rename to web/settings/assets/device-d3107147.js index c115a4d6ac..be9e2ad191 100644 --- a/web/settings/assets/device-f3520fbc.js +++ b/web/settings/assets/device-d3107147.js @@ -1 +1 @@ -import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; +import{_ as c,p as o,k as m,l as _,A as s,L as i,u as n,q as a,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[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."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const q=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-6223df3d.js b/web/settings/assets/device-d4d23cd7.js similarity index 87% rename from web/settings/assets/device-6223df3d.js rename to web/settings/assets/device-d4d23cd7.js index b26d6989d6..ce1ce15f5e 100644 --- a/web/settings/assets/device-6223df3d.js +++ b/web/settings/assets/device-d4d23cd7.js @@ -1 +1 @@ -import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; +import{_ as r,p as t,k as p,l as c,A as o,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland"},v={class:"small"};function h(n,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[o(i,null,{default:l(()=>[_(" Einstellungen für Sunny Island "),m("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const B=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-ae65393a.js b/web/settings/assets/device-d57c20ac.js similarity index 89% rename from web/settings/assets/device-ae65393a.js rename to web/settings/assets/device-d57c20ac.js index 67dffb0425..afaa74207e 100644 --- a/web/settings/assets/device-ae65393a.js +++ b/web/settings/assets/device-d57c20ac.js @@ -1 +1 @@ -import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; +import{_ as r,p as u,k as l,l as c,A as n,L as p,u as f,q as m,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-b59b9c77.js b/web/settings/assets/device-d6905669.js similarity index 87% rename from web/settings/assets/device-b59b9c77.js rename to web/settings/assets/device-d6905669.js index d0f64b8f58..212be1a2e0 100644 --- a/web/settings/assets/device-b59b9c77.js +++ b/web/settings/assets/device-d6905669.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-eded82a1.js b/web/settings/assets/device-e304fcca.js similarity index 87% rename from web/settings/assets/device-eded82a1.js rename to web/settings/assets/device-e304fcca.js index be5b8425c5..6225212b00 100644 --- a/web/settings/assets/device-eded82a1.js +++ b/web/settings/assets/device-e304fcca.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-solarmax"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Solarmax "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{V as default}; diff --git a/web/settings/assets/device-9c25dea2.js b/web/settings/assets/device-e41e1249.js similarity index 89% rename from web/settings/assets/device-9c25dea2.js rename to web/settings/assets/device-e41e1249.js index aa802e44af..72590ae02f 100644 --- a/web/settings/assets/device-9c25dea2.js +++ b/web/settings/assets/device-e41e1249.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as i,L as r,u as n,q as a,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const p=o("openwb-base-heading"),u=o("openwb-base-text-input");return _(),m("div",b,[i(p,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(u,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const C=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-b04bd256.js b/web/settings/assets/device-e5846fb7.js similarity index 89% rename from web/settings/assets/device-b04bd256.js rename to web/settings/assets/device-e5846fb7.js index fee952a876..01fea14b36 100644 --- a/web/settings/assets/device-b04bd256.js +++ b/web/settings/assets/device-e5846fb7.js @@ -1 +1 @@ -import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; +import{_ as r,p as d,k as l,l as p,A as n,L as c,u as f,q as m,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-lg"},b={class:"small"};function w(t,e,a,x,V,s){const u=d("openwb-base-heading"),i=d("openwb-base-text-input");return l(),p("div",v,[n(u,null,{default:c(()=>[f(" Einstellungen für LG ESS V1.0 "),m("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const q=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-d5aedcd9.js b/web/settings/assets/device-e67da7c1.js similarity index 87% rename from web/settings/assets/device-d5aedcd9.js rename to web/settings/assets/device-e67da7c1.js index d9d0dc119f..cabe4ab9b0 100644 --- a/web/settings/assets/device-d5aedcd9.js +++ b/web/settings/assets/device-e67da7c1.js @@ -1 +1 @@ -import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; +import{_ as u,p as t,k as c,l as p,A as a,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-carlogavazzi"},b={class:"small"};function z(o,e,n,h,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-text-input");return c(),p("div",g,[a(i,null,{default:l(()=>[_(" Einstellungen für Carlo Gavazzi "),m("span",b,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.ip_address"))},null,8,["model-value"])])}const q=u(v,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{q as default}; diff --git a/web/settings/assets/device-68cea660.js b/web/settings/assets/device-e690bc67.js similarity index 85% rename from web/settings/assets/device-68cea660.js rename to web/settings/assets/device-e690bc67.js index 13549c0b07..b2ec44ef1c 100644 --- a/web/settings/assets/device-68cea660.js +++ b/web/settings/assets/device-e690bc67.js @@ -1 +1 @@ -import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; +import{_ as p,p as n,k as r,l as d,A as o,L as s,u as a,q as u,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default}; diff --git a/web/settings/assets/device-fcd34186.js b/web/settings/assets/device-e8e7a237.js similarity index 90% rename from web/settings/assets/device-fcd34186.js rename to web/settings/assets/device-e8e7a237.js index 6cd1ea324c..5a9181fb08 100644 --- a/web/settings/assets/device-fcd34186.js +++ b/web/settings/assets/device-e8e7a237.js @@ -1 +1 @@ -import{_ as p,p as o,k as r,l as c,A as a,L as _,u as m,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function w(t,e,i,x,y,s){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(l,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"Shelly 1pm"},{value:2,text:"Shelly 1pm plus"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default}; +import{_ as p,p as o,k as r,l as c,A as a,L as _,u as m,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function w(t,e,i,x,y,s){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(l,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"Shelly 1pm"},{value:2,text:"Shelly 1pm plus"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/device-76b564cb.js b/web/settings/assets/device-e95c0504.js similarity index 95% rename from web/settings/assets/device-76b564cb.js rename to web/settings/assets/device-e95c0504.js index 5d498f8d95..fbb49bde05 100644 --- a/web/settings/assets/device-76b564cb.js +++ b/web/settings/assets/device-e95c0504.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; +import{_ as p,p as d,k as c,l as m,A as n,L as r,u,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,x,C,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" 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 B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-5e36d94b.js b/web/settings/assets/device-e97ebded.js similarity index 87% rename from web/settings/assets/device-5e36d94b.js rename to web/settings/assets/device-e97ebded.js index 4aa3b382ec..4dec93ed92 100644 --- a/web/settings/assets/device-5e36d94b.js +++ b/web/settings/assets/device-e97ebded.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-sem"},b={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),m("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{y as default}; diff --git a/web/settings/assets/device-368b885c.js b/web/settings/assets/device-eb39e5e3.js similarity index 96% rename from web/settings/assets/device-368b885c.js rename to web/settings/assets/device-eb39e5e3.js index 42dd92744a..c45fa3f6af 100644 --- a/web/settings/assets/device-368b885c.js +++ b/web/settings/assets/device-eb39e5e3.js @@ -1 +1 @@ -import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; +import{_,p as n,k as b,l as f,A as t,L as a,u as o,q as u,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,W,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" 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(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"","model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const E=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{E as default}; diff --git a/web/settings/assets/device-c7a69fb7.js b/web/settings/assets/device-f356c73d.js similarity index 86% rename from web/settings/assets/device-c7a69fb7.js rename to web/settings/assets/device-f356c73d.js index 5b06f4c7fb..43287f748a 100644 --- a/web/settings/assets/device-c7a69fb7.js +++ b/web/settings/assets/device-f356c73d.js @@ -1 +1 @@ -import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; +import{_ as c,p as o,k as u,l as p,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-e3dc"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für E3DC "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.address"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{B as default}; diff --git a/web/settings/assets/device-736742cc.js b/web/settings/assets/device-f422a199.js similarity index 87% rename from web/settings/assets/device-736742cc.js rename to web/settings/assets/device-f422a199.js index 659afb50be..47dd5cf1f7 100644 --- a/web/settings/assets/device-736742cc.js +++ b/web/settings/assets/device-f422a199.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; +import{_ as u,p as o,k as p,l as c,A as n,L as l,u as _,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer"},v={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Studer "),m("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{C as default}; diff --git a/web/settings/assets/displayTheme-af0ce411.js b/web/settings/assets/displayTheme-35595a93.js similarity index 97% rename from web/settings/assets/displayTheme-af0ce411.js rename to web/settings/assets/displayTheme-35595a93.js index 7ba29f6cb3..b7ca9046e1 100644 --- a/web/settings/assets/displayTheme-af0ce411.js +++ b/web/settings/assets/displayTheme-35595a93.js @@ -1,4 +1,4 @@ -import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" +import{_ as f,p as _,k as o,l as m,A as l,L as d,u as r,q as p,x as v,y as i,z as s}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DisplayThemeCards",emits:["update:configuration"],props:{configuration:{type:Object,required:!0}},methods:{updateConfiguration(c,e=void 0){this.$emit("update:configuration",{value:c,object:e})}}},V={class:"display-theme-cards"},x={class:"small"};function w(c,e,n,A,k,a){const b=_("openwb-base-heading"),u=_("openwb-base-button-group-input"),g=_("openwb-base-text-input");return o(),m("div",V,[l(b,null,{default:d(()=>[r(" Einstellungen für Display Theme Cards "),p("span",x,"(Modul: "+v(c.$options.name)+")",1)]),_:1}),l(b,null,{default:d(()=>[r("Bediensperre")]),_:1}),l(u,{title:"Bedienung sperren","model-value":n.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.lock_changes?(o(),i(g,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.lock_changes_code"))},{help:d(()=>[r(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Übersicht"')]),_:1}),l(u,{title:"Übersicht anzeigen","model-value":n.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.configuration.enable_dashboard_view?(o(),i(u,{key:1,title:"EVU anzeigen","model-value":n.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:2,title:"Hausverbrauch anzeigen","model-value":n.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:3,title:"Batteriespeicher anzeigen","model-value":n.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:4,title:"Ladepunkte anzeigen","model-value":n.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),n.configuration.enable_dashboard_view?(o(),i(u,{key:5,title:"PV anzeigen","model-value":n.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):s("v-if",!0),l(b,null,{default:d(()=>[r('Ansicht "Ladepunkte"')]),_:1}),l(u,{title:"Ladepunkte anzeigen","model-value":n.configuration.enable_charge_points_view,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),s(` Ansicht "Status" [r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as a,u as r,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-debacbf1.js b/web/settings/assets/external_inverter-5c208b04.js similarity index 86% rename from web/settings/assets/external_inverter-debacbf1.js rename to web/settings/assets/external_inverter-5c208b04.js index 672641bb7e..ca81ad2af4 100644 --- a/web/settings/assets/external_inverter-debacbf1.js +++ b/web/settings/assets/external_inverter-5c208b04.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/external_inverter-4989c79d.js b/web/settings/assets/external_inverter-af9b2b79.js similarity index 92% rename from web/settings/assets/external_inverter-4989c79d.js rename to web/settings/assets/external_inverter-af9b2b79.js index 33954b70f9..0c47e1ff5e 100644 --- a/web/settings/assets/external_inverter-4989c79d.js +++ b/web/settings/assets/external_inverter-af9b2b79.js @@ -1 +1 @@ -import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; +import{_ as c,p as i,k as p,l as _,A as n,L as u,u as d,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,B,r){const l=i("openwb-base-heading"),m=i("openwb-base-alert"),s=i("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:u(()=>[d(' 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}),n(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>r.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"Meter ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>r.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const V=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/index-cbcca7a0.js b/web/settings/assets/index-cbcca7a0.js deleted file mode 100644 index 522ba28e5d..0000000000 --- a/web/settings/assets/index-cbcca7a0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-94ac8c48.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import{p as Ae,a as qe}from"./vendor-axios-dc63434e.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-jquery-f7104ff8.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(console.log(this.emptyValue),e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};this.client.publish(e,JSON.stringify(t),l,s=>{s&&console.log("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){console.log(t),e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-b79c5fd8.js"),["assets/Status-b79c5fd8.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-be6ba638.js"),["assets/ChargeLog-be6ba638.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-372a98ba.js"),["assets/Chart-372a98ba.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-dd3fd71e.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-ce149f67.js"),["assets/GeneralConfig-ce149f67.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-df4003ba.js"),["assets/OptionalComponents-df4003ba.js","assets/dynamic-import-helper-be004503.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-6358761f.js"),["assets/GeneralChargeConfig-6358761f.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-1646b158.js"),["assets/InstantChargeConfig-1646b158.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-3851cc53.js"),["assets/PVChargeConfig-3851cc53.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-6ea9f121.js"),["assets/TimeChargeConfig-6ea9f121.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-ff0252cd.js"),["assets/ScheduledChargeConfig-ff0252cd.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-053ec617.js"),["assets/HardwareInstallation-053ec617.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-8a4d7343.js"),["assets/LoadManagementConfig-8a4d7343.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-8561f9a9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-40572ce1.js"),["assets/ChargePointInstallation-40572ce1.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-1e731d22.js"),["assets/VehicleConfig-1e731d22.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-fb035176.js"),["assets/CloudConfig-fb035176.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-9fb8ed69.js"),["assets/MqttBridgeConfig-9fb8ed69.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-0afeacb4.js"),["assets/DebugConfig-0afeacb4.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-d2984420.js"),["assets/Support-d2984420.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-c100c109.js"),["assets/LegalSettings-c100c109.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d604c488.js"),["assets/System-d604c488.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f7a0955c.js"),["assets/DataManagement-f7a0955c.js","assets/vendor-fortawesome-ad83e535.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-082dc7f3.js"),["assets/TestingStore-082dc7f3.js","assets/OpenwbSortableList-8561f9a9.js","assets/vendor-94ac8c48.js","assets/vendor-sortablejs-dbc23470.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-ad83e535.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-9f620114.js","assets/vendor-jquery-f7104ff8.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-dc63434e.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/index-f08a7306.js b/web/settings/assets/index-f08a7306.js new file mode 100644 index 0000000000..aedaebc326 --- /dev/null +++ b/web/settings/assets/index-f08a7306.js @@ -0,0 +1 @@ +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-20bb207d.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import{p as Ae,a as qe}from"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-jquery-89b63fca.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};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 o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-954adcf7.js"),["assets/Status-954adcf7.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-0999e18c.js"),["assets/ChargeLog-0999e18c.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-73a93152.js"),["assets/Chart-73a93152.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-93103a11.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-f5ba108a.js"),["assets/GeneralConfig-f5ba108a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-4617e1d7.js"),["assets/OptionalComponents-4617e1d7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-48509d36.js"),["assets/GeneralChargeConfig-48509d36.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-30b13a1a.js"),["assets/InstantChargeConfig-30b13a1a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-7b09b63a.js"),["assets/PVChargeConfig-7b09b63a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-3a55662f.js"),["assets/TimeChargeConfig-3a55662f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-5a41484d.js"),["assets/ScheduledChargeConfig-5a41484d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-02a629c9.js"),["assets/HardwareInstallation-02a629c9.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-ca6e28c3.js"),["assets/LoadManagementConfig-ca6e28c3.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-ac8ac331.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-0b5b847e.js"),["assets/ChargePointInstallation-0b5b847e.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-2663db55.js"),["assets/VehicleConfig-2663db55.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-4d98a70d.js"),["assets/CloudConfig-4d98a70d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-5474c1b1.js"),["assets/MqttBridgeConfig-5474c1b1.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8fb43a78.js"),["assets/DebugConfig-8fb43a78.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-bee6b474.js"),["assets/Support-bee6b474.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f8ef4166.js"),["assets/LegalSettings-f8ef4166.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-c57d9a74.js"),["assets/System-c57d9a74.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f38afa86.js"),["assets/DataManagement-f38afa86.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-1048cc3b.js"),["assets/TestingStore-1048cc3b.js","assets/OpenwbSortableList-ac8ac331.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/inverter-d63a850e.js b/web/settings/assets/inverter-08367390.js similarity index 86% rename from web/settings/assets/inverter-d63a850e.js rename to web/settings/assets/inverter-08367390.js index 581d38bcca..0df08313ca 100644 --- a/web/settings/assets/inverter-d63a850e.js +++ b/web/settings/assets/inverter-08367390.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-fb25d42c.js b/web/settings/assets/inverter-0fd0b224.js similarity index 86% rename from web/settings/assets/inverter-fb25d42c.js rename to web/settings/assets/inverter-0fd0b224.js index 945ff453a9..4ca392e360 100644 --- a/web/settings/assets/inverter-fb25d42c.js +++ b/web/settings/assets/inverter-0fd0b224.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-d5ca1a80.js b/web/settings/assets/inverter-135f51a3.js similarity index 90% rename from web/settings/assets/inverter-d5ca1a80.js rename to web/settings/assets/inverter-135f51a3.js index a160bd4235..044e690288 100644 --- a/web/settings/assets/inverter-d5ca1a80.js +++ b/web/settings/assets/inverter-135f51a3.js @@ -1 +1 @@ -import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as p,l as c,A as i,L as m,u as _,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus-ID",min:1,max:255,required:"","model-value":a.configuration.modbus_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-735276eb.js b/web/settings/assets/inverter-15408a2b.js similarity index 94% rename from web/settings/assets/inverter-735276eb.js rename to web/settings/assets/inverter-15408a2b.js index dc7953b221..fd96a443b1 100644 --- a/web/settings/assets/inverter-735276eb.js +++ b/web/settings/assets/inverter-15408a2b.js @@ -1 +1 @@ -import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; +import{_ as c,p as u,k as m,l as h,A as a,L as o,u as t,q as n,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,L,l){const p=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(p,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,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"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" 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."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const Z=c(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{Z as default}; diff --git a/web/settings/assets/inverter-c0320c10.js b/web/settings/assets/inverter-1b75ddba.js similarity index 88% rename from web/settings/assets/inverter-c0320c10.js rename to web/settings/assets/inverter-1b75ddba.js index d9943510b8..1f40dad3b3 100644 --- a/web/settings/assets/inverter-c0320c10.js +++ b/web/settings/assets/inverter-1b75ddba.js @@ -1 +1 @@ -import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default}; +import{_ as u,p as n,k as p,l as d,A as o,L as c,u as v,q as _,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-0a8a02aa.js b/web/settings/assets/inverter-1c1592c9.js similarity index 86% rename from web/settings/assets/inverter-0a8a02aa.js rename to web/settings/assets/inverter-1c1592c9.js index 0c80c472c8..981944bec0 100644 --- a/web/settings/assets/inverter-0a8a02aa.js +++ b/web/settings/assets/inverter-1c1592c9.js @@ -1 +1 @@ -import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; +import{_ as c,p as t,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-d7dcc616.js b/web/settings/assets/inverter-1f399f0d.js similarity index 94% rename from web/settings/assets/inverter-d7dcc616.js rename to web/settings/assets/inverter-1f399f0d.js index 2242b9955d..0c27a0da4a 100644 --- a/web/settings/assets/inverter-d7dcc616.js +++ b/web/settings/assets/inverter-1f399f0d.js @@ -1 +1 @@ -import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; +import{_ as d,p as o,k as c,l,A as n,L as p,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-57f7e67c.js b/web/settings/assets/inverter-267fccce.js similarity index 86% rename from web/settings/assets/inverter-57f7e67c.js rename to web/settings/assets/inverter-267fccce.js index 9c3a0f3888..537134ccc5 100644 --- a/web/settings/assets/inverter-57f7e67c.js +++ b/web/settings/assets/inverter-267fccce.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default}; diff --git a/web/settings/assets/inverter-3b84e31d.js b/web/settings/assets/inverter-326280ce.js similarity index 86% rename from web/settings/assets/inverter-3b84e31d.js rename to web/settings/assets/inverter-326280ce.js index b0599a5871..b18980b680 100644 --- a/web/settings/assets/inverter-3b84e31d.js +++ b/web/settings/assets/inverter-326280ce.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-4ed4378e.js b/web/settings/assets/inverter-3d45d55a.js similarity index 91% rename from web/settings/assets/inverter-4ed4378e.js rename to web/settings/assets/inverter-3d45d55a.js index 133551988a..9645690a31 100644 --- a/web/settings/assets/inverter-4ed4378e.js +++ b/web/settings/assets/inverter-3d45d55a.js @@ -1 +1 @@ -import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; +import{_ as l,p as o,k as f,l as _,A as r,L as i,u as t,q as s,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-powerfox-inverter"},g={class:"small"},h=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);function w(n,e,a,x,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return f(),_("div",v,[r(u,null,{default:i(()=>[t(" Einstellungen für Powerfox Wechselrichter "),s("span",g,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:i(()=>[t(" Um die ID herauszufinden mit dem Browser die Adresse "),h,t(" aufrufen und dort Benutzername und Passwort eingeben. Die Device ID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/KLeinschreibung ist zu beachten! ")]),_:1},8,["model-value"])])}const B=l(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-f900cffa.js b/web/settings/assets/inverter-3d819a6f.js similarity index 86% rename from web/settings/assets/inverter-f900cffa.js rename to web/settings/assets/inverter-3d819a6f.js index d39def9f2d..c03a3127ff 100644 --- a/web/settings/assets/inverter-f900cffa.js +++ b/web/settings/assets/inverter-3d819a6f.js @@ -1 +1 @@ -import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as l,l as p,A as o,L as s,u as a,q as d,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-ae905211.js b/web/settings/assets/inverter-3fdb1742.js similarity index 86% rename from web/settings/assets/inverter-ae905211.js rename to web/settings/assets/inverter-3fdb1742.js index fde29c139d..7a85e975fc 100644 --- a/web/settings/assets/inverter-ae905211.js +++ b/web/settings/assets/inverter-3fdb1742.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as r,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-e383405a.js b/web/settings/assets/inverter-40f5b027.js similarity index 93% rename from web/settings/assets/inverter-e383405a.js rename to web/settings/assets/inverter-40f5b027.js index b3d7d1d7ee..64ec704cdf 100644 --- a/web/settings/assets/inverter-e383405a.js +++ b/web/settings/assets/inverter-40f5b027.js @@ -1 +1 @@ -import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; +import{_ as u,p as s,k as _,l as m,A as t,L as o,u as n,q as e,x as a}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),x=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1);function k(i,l,r,B,I,y){const p=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert");return _(),m("div",b,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" 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: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),x,n(" Beispiel: "),z])])]),_:1})])}const V=u(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{V as default}; diff --git a/web/settings/assets/inverter-89a115de.js b/web/settings/assets/inverter-47bedabe.js similarity index 86% rename from web/settings/assets/inverter-89a115de.js rename to web/settings/assets/inverter-47bedabe.js index 9d109c2ac2..ba4d11449e 100644 --- a/web/settings/assets/inverter-89a115de.js +++ b/web/settings/assets/inverter-47bedabe.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as i,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-aba6e6d2.js b/web/settings/assets/inverter-4c98a82a.js similarity index 94% rename from web/settings/assets/inverter-aba6e6d2.js rename to web/settings/assets/inverter-4c98a82a.js index 0025066b00..ffbbc83d4b 100644 --- a/web/settings/assets/inverter-aba6e6d2.js +++ b/web/settings/assets/inverter-4c98a82a.js @@ -1 +1 @@ -import{_ as d,p as n,k as c,l,A as o,L as p,u as m,q as _,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/inverter.vue"]]);export{I as default}; +import{_ as d,p as n,k as c,l,A as o,L as p,u as m,q as _,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-66b1df21.js b/web/settings/assets/inverter-508f415f.js similarity index 89% rename from web/settings/assets/inverter-66b1df21.js rename to web/settings/assets/inverter-508f415f.js index 40e718c06a..ae515d5550 100644 --- a/web/settings/assets/inverter-66b1df21.js +++ b/web/settings/assets/inverter-508f415f.js @@ -1 +1 @@ -import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as l,l as d,A as n,L as p,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["buttons","model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-da627431.js b/web/settings/assets/inverter-5b0c8748.js similarity index 93% rename from web/settings/assets/inverter-da627431.js rename to web/settings/assets/inverter-5b0c8748.js index 6cf8869c19..8fd1584fc1 100644 --- a/web/settings/assets/inverter-da627431.js +++ b/web/settings/assets/inverter-5b0c8748.js @@ -1 +1 @@ -import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; +import{_ as c,p as l,k as m,l as _,A as i,L as r,u as t,q as u,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const p=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(p,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[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. '),b,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"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const P=c(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{P as default}; diff --git a/web/settings/assets/inverter-a4f4de69.js b/web/settings/assets/inverter-5cfbe42d.js similarity index 86% rename from web/settings/assets/inverter-a4f4de69.js rename to web/settings/assets/inverter-5cfbe42d.js index a44fea1536..f17d6ee39d 100644 --- a/web/settings/assets/inverter-a4f4de69.js +++ b/web/settings/assets/inverter-5cfbe42d.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-983f9bf4.js b/web/settings/assets/inverter-5d68f662.js similarity index 93% rename from web/settings/assets/inverter-983f9bf4.js rename to web/settings/assets/inverter-5d68f662.js index 09d5a29ac5..ec89542a32 100644 --- a/web/settings/assets/inverter-983f9bf4.js +++ b/web/settings/assets/inverter-5d68f662.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",g,[t(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-6afece8c.js b/web/settings/assets/inverter-6ce20d89.js similarity index 90% rename from web/settings/assets/inverter-6afece8c.js rename to web/settings/assets/inverter-6ce20d89.js index 70be004d48..a2decfca8c 100644 --- a/web/settings/assets/inverter-6afece8c.js +++ b/web/settings/assets/inverter-6ce20d89.js @@ -1 +1 @@ -import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; +import{_ as p,p as t,k as m,l as _,A as o,L as s,u as i,q as f,x as h}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,x,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[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(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-b33414cf.js b/web/settings/assets/inverter-7f5cbd1f.js similarity index 89% rename from web/settings/assets/inverter-b33414cf.js rename to web/settings/assets/inverter-7f5cbd1f.js index 941e5fd81c..ca85de6e7c 100644 --- a/web/settings/assets/inverter-b33414cf.js +++ b/web/settings/assets/inverter-7f5cbd1f.js @@ -1 +1 @@ -import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; +import{_ as u,p as o,k as p,l as m,A as n,L as a,u as i,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-be294b52.js b/web/settings/assets/inverter-86ab0f22.js similarity index 86% rename from web/settings/assets/inverter-be294b52.js rename to web/settings/assets/inverter-86ab0f22.js index 6eef22d36d..45e482b584 100644 --- a/web/settings/assets/inverter-be294b52.js +++ b/web/settings/assets/inverter-86ab0f22.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-8ebf65c2.js b/web/settings/assets/inverter-89491124.js similarity index 96% rename from web/settings/assets/inverter-8ebf65c2.js rename to web/settings/assets/inverter-89491124.js index 6cbe4c2afb..1d3b0d5534 100644 --- a/web/settings/assets/inverter-8ebf65c2.js +++ b/web/settings/assets/inverter-89491124.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as s,u,q as b,x as v}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-sunnyboy-inverter"},y={class:"small"};function h(t,e,i,w,S,r){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-select-input");return _(),m("div",g,[a(d,null,{default:s(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),b("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:s(()=>[u(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),a(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-b6d89f35.js b/web/settings/assets/inverter-8c6dadd9.js similarity index 86% rename from web/settings/assets/inverter-b6d89f35.js rename to web/settings/assets/inverter-8c6dadd9.js index f41f140db7..0762908243 100644 --- a/web/settings/assets/inverter-b6d89f35.js +++ b/web/settings/assets/inverter-8c6dadd9.js @@ -1 +1 @@ -import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; +import{_ as c,p as o,k as d,l as p,A as n,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-42feff92.js b/web/settings/assets/inverter-8ca711bc.js similarity index 86% rename from web/settings/assets/inverter-42feff92.js rename to web/settings/assets/inverter-8ca711bc.js index 85e55b1389..c05bc7c5db 100644 --- a/web/settings/assets/inverter-42feff92.js +++ b/web/settings/assets/inverter-8ca711bc.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-973593c5.js b/web/settings/assets/inverter-90b5924d.js similarity index 86% rename from web/settings/assets/inverter-973593c5.js rename to web/settings/assets/inverter-90b5924d.js index 48438568c2..0ebfa3025a 100644 --- a/web/settings/assets/inverter-973593c5.js +++ b/web/settings/assets/inverter-90b5924d.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-bce80bd5.js b/web/settings/assets/inverter-92eb5977.js similarity index 86% rename from web/settings/assets/inverter-bce80bd5.js rename to web/settings/assets/inverter-92eb5977.js index 8a64d22552..c6d8b6f3bb 100644 --- a/web/settings/assets/inverter-bce80bd5.js +++ b/web/settings/assets/inverter-92eb5977.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-91521524.js b/web/settings/assets/inverter-96db7f1d.js similarity index 90% rename from web/settings/assets/inverter-91521524.js rename to web/settings/assets/inverter-96db7f1d.js index 7c5e5e9089..4ba8fe52eb 100644 --- a/web/settings/assets/inverter-91521524.js +++ b/web/settings/assets/inverter-96db7f1d.js @@ -1 +1 @@ -import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; +import{_ as l,p as o,k as m,l as _,A as r,L as i,u as n,q as s,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,x,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-ba59974f.js b/web/settings/assets/inverter-9962a05f.js similarity index 95% rename from web/settings/assets/inverter-ba59974f.js rename to web/settings/assets/inverter-9962a05f.js index a183a7ca61..528fad947a 100644 --- a/web/settings/assets/inverter-ba59974f.js +++ b/web/settings/assets/inverter-9962a05f.js @@ -1 +1 @@ -import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; +import{_ as c,p as r,k as g,l as _,A as n,L as s,u,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[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}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const q=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-98ed6e35.js b/web/settings/assets/inverter-a028ca0c.js similarity index 88% rename from web/settings/assets/inverter-98ed6e35.js rename to web/settings/assets/inverter-a028ca0c.js index cbf05f9439..94402753f0 100644 --- a/web/settings/assets/inverter-98ed6e35.js +++ b/web/settings/assets/inverter-a028ca0c.js @@ -1 +1 @@ -import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as c,l as d,A as o,L as p,u as _,q as f,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-09d68c12.js b/web/settings/assets/inverter-a4741525.js similarity index 89% rename from web/settings/assets/inverter-09d68c12.js rename to web/settings/assets/inverter-a4741525.js index 1aad5941ed..ef47c37cca 100644 --- a/web/settings/assets/inverter-09d68c12.js +++ b/web/settings/assets/inverter-a4741525.js @@ -1 +1 @@ -import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default}; +import{_ as l,p as n,k as d,l as c,A as o,L as p,u as v,q as _,x as m}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-2b727919.js b/web/settings/assets/inverter-a532223b.js similarity index 93% rename from web/settings/assets/inverter-2b727919.js rename to web/settings/assets/inverter-a532223b.js index 432a6aad38..8a0ebd42d5 100644 --- a/web/settings/assets/inverter-2b727919.js +++ b/web/settings/assets/inverter-a532223b.js @@ -1 +1 @@ -import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; +import{_ as u,p as o,k as c,l,A as t,L as p,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const I=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{I as default}; diff --git a/web/settings/assets/inverter-3e855a0b.js b/web/settings/assets/inverter-a6e26156.js similarity index 86% rename from web/settings/assets/inverter-3e855a0b.js rename to web/settings/assets/inverter-a6e26156.js index d9d6636f5d..d49dfb1386 100644 --- a/web/settings/assets/inverter-3e855a0b.js +++ b/web/settings/assets/inverter-a6e26156.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default}; diff --git a/web/settings/assets/inverter-5500500b.js b/web/settings/assets/inverter-af852271.js similarity index 87% rename from web/settings/assets/inverter-5500500b.js rename to web/settings/assets/inverter-af852271.js index 46f2917125..d01b195988 100644 --- a/web/settings/assets/inverter-5500500b.js +++ b/web/settings/assets/inverter-af852271.js @@ -1 +1 @@ -import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; +import{_ as u,p as n,k as c,l as p,A as o,L as l,u as m,q as _,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const C=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-39afe3b5.js b/web/settings/assets/inverter-b1415371.js similarity index 86% rename from web/settings/assets/inverter-39afe3b5.js rename to web/settings/assets/inverter-b1415371.js index 2d010ef11f..4d110a8b5d 100644 --- a/web/settings/assets/inverter-39afe3b5.js +++ b/web/settings/assets/inverter-b1415371.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return p(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-1a27b5a2.js b/web/settings/assets/inverter-b959eebb.js similarity index 86% rename from web/settings/assets/inverter-1a27b5a2.js rename to web/settings/assets/inverter-b959eebb.js index 7951b213ba..91c0f47d7d 100644 --- a/web/settings/assets/inverter-1a27b5a2.js +++ b/web/settings/assets/inverter-b959eebb.js @@ -1 +1 @@ -import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; +import{_ as c,p as t,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/inverter-35d50734.js b/web/settings/assets/inverter-be6aac70.js similarity index 86% rename from web/settings/assets/inverter-35d50734.js rename to web/settings/assets/inverter-be6aac70.js index 9de9f05f9b..01d2322610 100644 --- a/web/settings/assets/inverter-35d50734.js +++ b/web/settings/assets/inverter-be6aac70.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; +import{_ as c,p as n,k as d,l as p,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const E=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{E as default}; diff --git a/web/settings/assets/inverter-bc54ef72.js b/web/settings/assets/inverter-c08d4e42.js similarity index 86% rename from web/settings/assets/inverter-bc54ef72.js rename to web/settings/assets/inverter-c08d4e42.js index 899d1873c2..a0e1e15f37 100644 --- a/web/settings/assets/inverter-bc54ef72.js +++ b/web/settings/assets/inverter-c08d4e42.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-b35ac71f.js b/web/settings/assets/inverter-c90183ae.js similarity index 88% rename from web/settings/assets/inverter-b35ac71f.js rename to web/settings/assets/inverter-c90183ae.js index b146057765..5845b79c8b 100644 --- a/web/settings/assets/inverter-b35ac71f.js +++ b/web/settings/assets/inverter-c90183ae.js @@ -1 +1 @@ -import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; +import{_ as c,p as t,k as l,l as _,A as o,L as a,u as i,q as m,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const q=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{q as default}; diff --git a/web/settings/assets/inverter-0daad30f.js b/web/settings/assets/inverter-d02eb41e.js similarity index 90% rename from web/settings/assets/inverter-0daad30f.js rename to web/settings/assets/inverter-d02eb41e.js index df86c9e769..423c3a1bc0 100644 --- a/web/settings/assets/inverter-0daad30f.js +++ b/web/settings/assets/inverter-d02eb41e.js @@ -1 +1 @@ -import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default}; +import{_ as d,p as o,k as p,l as c,A as i,L as m,u as _,q as f,x as v}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default}; diff --git a/web/settings/assets/inverter-3df75149.js b/web/settings/assets/inverter-d2ccf27d.js similarity index 91% rename from web/settings/assets/inverter-3df75149.js rename to web/settings/assets/inverter-d2ccf27d.js index 50a6b4a958..64fd7254dc 100644 --- a/web/settings/assets/inverter-3df75149.js +++ b/web/settings/assets/inverter-d2ccf27d.js @@ -1 +1 @@ -import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; +import{_ as c,p as o,k as _,l as m,A as a,L as i,u as s,q as b,x as f}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const d=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),p=o("openwb-base-number-input");return _(),m("div",v,[a(d,null,{default:i(()=>[s(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{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":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["buttons","model-value"]),a(p,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[s(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=c(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default}; diff --git a/web/settings/assets/inverter-22be4ed9.js b/web/settings/assets/inverter-e3d31521.js similarity index 93% rename from web/settings/assets/inverter-22be4ed9.js rename to web/settings/assets/inverter-e3d31521.js index b1004887c8..c4d20eac8b 100644 --- a/web/settings/assets/inverter-22be4ed9.js +++ b/web/settings/assets/inverter-e3d31521.js @@ -1 +1 @@ -import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as d,l,A as o,L as s,u as r,q as p,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-f266f49d.js b/web/settings/assets/inverter-e5461fd3.js similarity index 86% rename from web/settings/assets/inverter-f266f49d.js rename to web/settings/assets/inverter-e5461fd3.js index 32a1e4c073..9e46ffc796 100644 --- a/web/settings/assets/inverter-f266f49d.js +++ b/web/settings/assets/inverter-e5461fd3.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; +import{_ as c,p as n,k as p,l as d,A as o,L as s,u as a,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-b47e8b65.js b/web/settings/assets/inverter-eef610e6.js similarity index 86% rename from web/settings/assets/inverter-b47e8b65.js rename to web/settings/assets/inverter-eef610e6.js index 44bdefb92b..427f9ebe2f 100644 --- a/web/settings/assets/inverter-b47e8b65.js +++ b/web/settings/assets/inverter-eef610e6.js @@ -1 +1 @@ -import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; +import{_ as p,p as n,k as c,l as d,A as o,L as s,u as a,q as l,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-f0ad6bcd.js b/web/settings/assets/inverter-f7d9af29.js similarity index 86% rename from web/settings/assets/inverter-f0ad6bcd.js rename to web/settings/assets/inverter-f7d9af29.js index 00141006d6..8b2f813498 100644 --- a/web/settings/assets/inverter-f0ad6bcd.js +++ b/web/settings/assets/inverter-f7d9af29.js @@ -1 +1 @@ -import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; +import{_ as d,p as t,k as c,l as p,A as n,L as s,u as r,q as u,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default}; diff --git a/web/settings/assets/inverter-3515d2b5.js b/web/settings/assets/inverter-f9807fb1.js similarity index 93% rename from web/settings/assets/inverter-3515d2b5.js rename to web/settings/assets/inverter-f9807fb1.js index 9eb3674999..028aa96230 100644 --- a/web/settings/assets/inverter-3515d2b5.js +++ b/web/settings/assets/inverter-f9807fb1.js @@ -1 +1 @@ -import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; +import{_ as c,p as n,k as p,l,A as o,L as s,u as a,q as d,x as u}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-189fc2cb.js b/web/settings/assets/vehicle-0e30b50e.js similarity index 94% rename from web/settings/assets/vehicle-189fc2cb.js rename to web/settings/assets/vehicle-0e30b50e.js index 4104b9c93e..08e081528e 100644 --- a/web/settings/assets/vehicle-189fc2cb.js +++ b/web/settings/assets/vehicle-0e30b50e.js @@ -1 +1 @@ -import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; +import{_ as p,p as i,k as h,l as m,A as r,L as o,u as e,q as n,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"VehicleSocManual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,a=void 0){this.$emit("update:configuration",{value:t,object:a})}}},f={class:"vehicle-soc-tesla"},k={class:"small"},w=n("br",null,null,-1),z=n("br",null,null,-1),v=n("br",null,null,-1),W=n("br",null,null,-1);function x(t,a,l,C,B,s){const d=i("openwb-base-heading"),u=i("openwb-base-alert"),c=i("openwb-base-number-input");return h(),m("div",f,[r(d,null,{default:o(()=>[e(" Einstellungen für manuellen SoC "),n("span",k,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),r(u,{subtype:"info"},{default:o(()=>[e(' 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}),r(c,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":l.configuration.efficiency*100,"onUpdate:modelValue":a[0]||(a[0]=g=>s.updateConfiguration(g/100,"configuration.efficiency"))},{help:o(()=>[e(" 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 Chameleonlader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),w,e(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),z,e(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),v,e(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),W]),_:1},8,["model-value"])])}const S=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{S as default}; diff --git a/web/settings/assets/vehicle-0247f03c.js b/web/settings/assets/vehicle-0ea9ae58.js similarity index 93% rename from web/settings/assets/vehicle-0247f03c.js rename to web/settings/assets/vehicle-0ea9ae58.js index ef0d198b23..e48c00ae01 100644 --- a/web/settings/assets/vehicle-0247f03c.js +++ b/web/settings/assets/vehicle-0ea9ae58.js @@ -1 +1 @@ -import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; +import{_ as p,p as l,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"VehicleSocKia",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"vehicle-soc-kia"},b={class:"small"};function h(d,e,i,w,V,r){const s=l("openwb-base-heading"),u=l("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Kia/Hyundai SoC "),f("span",b,"(Modul: "+g(d.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"PIN",required:"",subtype:"password","model-value":i.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.pin"))},{help:o(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>r.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const x=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{x as default}; diff --git a/web/settings/assets/vehicle-c865f314.js b/web/settings/assets/vehicle-11ffdccd.js similarity index 91% rename from web/settings/assets/vehicle-c865f314.js rename to web/settings/assets/vehicle-11ffdccd.js index f02776c353..fa98122fda 100644 --- a/web/settings/assets/vehicle-c865f314.js +++ b/web/settings/assets/vehicle-11ffdccd.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocBmw",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-bmw"},b={class:"small"};function w(i,e,r,h,B,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für BMW SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-b76d2976.js b/web/settings/assets/vehicle-344c6660.js similarity index 91% rename from web/settings/assets/vehicle-b76d2976.js rename to web/settings/assets/vehicle-344c6660.js index 90cf6cfa74..0171ceeba3 100644 --- a/web/settings/assets/vehicle-b76d2976.js +++ b/web/settings/assets/vehicle-344c6660.js @@ -1 +1 @@ -import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; +import{_ as c,p as u,k as p,l as m,A as o,L as i,u as a,q as _,x as h}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"vehicle-soc-http"},v={class:"small"};function b(t,e,r,w,k,l){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return p(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für HTTP SoC "),_("span",v,"(Modul: "+h(t.$options.name)+")",1)]),_:1}),o(s,{title:"SoC URL",subtype:"url",required:"","model-value":r.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.soc_url"))},{help:i(()=>[a(" 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"]),o(s,{title:"Reichweiten URL",subtype:"url","model-value":r.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.range_url"))},{help:i(()=>[a(" 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 z=c(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{z as default}; diff --git a/web/settings/assets/vehicle-84dd6d0d.js b/web/settings/assets/vehicle-34ce6cc8.js similarity index 95% rename from web/settings/assets/vehicle-84dd6d0d.js rename to web/settings/assets/vehicle-34ce6cc8.js index 43b35b64c7..672a88aa0a 100644 --- a/web/settings/assets/vehicle-84dd6d0d.js +++ b/web/settings/assets/vehicle-34ce6cc8.js @@ -1 +1 @@ -import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; +import{_ as g,p as r,k as f,l as _,A as t,L as a,u as o,q as v,x as b}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"VehicleSocPSA",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},w={class:"vehicle-soc-psa"},S={class:"small"};function C(s,e,i,x,A,l){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),u=r("openwb-base-text-input"),c=r("openwb-base-select-input"),m=r("openwb-base-card");return f(),_("div",w,[t(d,null,{default:a(()=>[o(" Einstellungen für PSA SoC "),v("span",S,"(Modul: "+b(s.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" PSA liefert während eines Ladevorgangs keine Aktualisierung des Ladestands. Die manuelle Berechnung des Ladestands ist derzeit noch nicht implementiert, SoC-gesteuerte Ladung ist daher noch nicht möglich. ")]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[o(" Der Benutzername für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.password"))},{help:a(()=>[o(" Das Passwort für die Anmeldung an den PSA-Servern. ")]),_:1},8,["model-value"]),t(c,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"Peugeot",text:"Peugeot"},{value:"Citroen",text:"Citroen"},{value:"DS",text:"DS"},{value:"Opel",text:"Opel"},{value:"Vauxhall",text:"Vauxhall"}],"model-value":i.configuration.manufacturer,"onUpdate:modelValue":e[2]||(e[2]=n=>l.updateConfiguration(n,"configuration.manufacturer"))},{help:a(()=>[o(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),t(u,{title:"VIN","model-value":i.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>l.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[o(" Die Fahrgestellnummer des Fahrzeugs. Nur notwendig falls mehrere Fahrzeuge im selben Account vorhanden sind. ")]),_:1},8,["model-value"]),t(m,{title:"Erweiterte Einstellungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[t(u,{title:"Client ID",subtype:"user","model-value":i.configuration.client_id,"onUpdate:modelValue":e[4]||(e[4]=n=>l.updateConfiguration(n,"configuration.client_id"))},{help:a(()=>[o(" Die Client-ID für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"]),t(u,{title:"Client Secret",subtype:"password","model-value":i.configuration.client_secret,"onUpdate:modelValue":e[5]||(e[5]=n=>l.updateConfiguration(n,"configuration.client_secret"))},{help:a(()=>[o(" Das Client-Secret für die Anmeldung an den PSA-Servern, muss normalerweise nicht angegeben werden. ")]),_:1},8,["model-value"])]),_:1})])}const P=g(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{P as default}; diff --git a/web/settings/assets/vehicle-f74618cf.js b/web/settings/assets/vehicle-677f2094.js similarity index 91% rename from web/settings/assets/vehicle-f74618cf.js rename to web/settings/assets/vehicle-677f2094.js index 2a9f92b0dd..d3c9c744b9 100644 --- a/web/settings/assets/vehicle-f74618cf.js +++ b/web/settings/assets/vehicle-677f2094.js @@ -1 +1 @@ -import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as c,l as m,A as t,L as o,u as a,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocVwid",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-vwid"},w={class:"small"};function b(i,e,r,h,V,u){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return c(),m("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für VW ID SoC "),f("span",w,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),t(s,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(s,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>u.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-2c5d967c.js b/web/settings/assets/vehicle-82a4990a.js similarity index 90% rename from web/settings/assets/vehicle-2c5d967c.js rename to web/settings/assets/vehicle-82a4990a.js index 24addf0f73..24d90a00b6 100644 --- a/web/settings/assets/vehicle-2c5d967c.js +++ b/web/settings/assets/vehicle-82a4990a.js @@ -1 +1 @@ -import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; +import{_ as d,p as u,k as p,l as c,A as o,L as m,u as f,q as _,x as v}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"vehicle-soc-evnotify"},y={class:"small"};function h(t,e,i,k,w,a){const r=u("openwb-base-heading"),s=u("openwb-base-number-input"),l=u("openwb-base-text-input");return p(),c("div",b,[o(r,null,{default:m(()=>[f(" Einstellungen für EVnotify SoC "),_("span",y,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),o(s,{title:"ID",required:"",min:0,"model-value":i.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),o(l,{title:"AKey",required:"","model-value":i.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),o(l,{title:"Token",required:"","model-value":i.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const C=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-839ee3de.js b/web/settings/assets/vehicle-839ee3de.js deleted file mode 100644 index a8837cde18..0000000000 --- a/web/settings/assets/vehicle-839ee3de.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-94ac8c48.js";import{a as y}from"./vendor-axios-dc63434e.js";import{C}from"./index-cbcca7a0.js";import"./vendor-sortablejs-dbc23470.js";import"./vendor-fortawesome-ad83e535.js";import"./vendor-bootstrap-9f620114.js";import"./vendor-jquery-f7104ff8.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.encode(e),console.log(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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-6f02cb37.js b/web/settings/assets/vehicle-8cbf750d.js similarity index 92% rename from web/settings/assets/vehicle-6f02cb37.js rename to web/settings/assets/vehicle-8cbf750d.js index cfe713b672..df388cf068 100644 --- a/web/settings/assets/vehicle-6f02cb37.js +++ b/web/settings/assets/vehicle-8cbf750d.js @@ -1 +1 @@ -import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; +import{_ as u,p as i,k as _,l as h,A as n,L as o,u as t,q as e,x as l}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const m={name:"VehicleSocMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(s,a=void 0){this.$emit("update:configuration",{value:s,object:a})}}},f={class:"vehicle-soc-mqtt"},b={class:"small"},g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"89.5",-1),k=e("br",null,null,-1),x=e("br",null,null,-1),B=e("br",null,null,-1),q=e("span",{class:"text-info"},"356.5",-1);function z(s,a,c,C,T,y){const d=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return _(),h("div",f,[n(d,null,{default:o(()=>[t(" Einstellungen für MQTT SoC "),e("span",b,"(Modul: "+l(s.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:o(()=>[t(" 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. "),e("ul",null,[e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/soc",1)]),_:1}),g,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),v,t(" Beispiel: "),w]),e("li",null,[n(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/vehicle/"+l(c.vehicleId)+"/get/range",1)]),_:1}),k,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),x,t(" Diese Info ist optional."),B,t(" Beispiel: "),q])])]),_:1})])}const N=u(m,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-174df8ec.js b/web/settings/assets/vehicle-c74f02d0.js similarity index 93% rename from web/settings/assets/vehicle-174df8ec.js rename to web/settings/assets/vehicle-c74f02d0.js index a2ec255f57..dae07ed8b9 100644 --- a/web/settings/assets/vehicle-174df8ec.js +++ b/web/settings/assets/vehicle-c74f02d0.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as g}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"VehicleSocRenault",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!1}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},_={class:"vehicle-soc-renault"},h={class:"small"};function b(l,e,u,w,V,i){const s=d("openwb-base-heading"),r=d("openwb-base-text-input");return m(),c("div",_,[t(s,null,{default:o(()=>[a(" Einstellungen für Renault SoC "),f("span",h,"(Modul: "+g(l.$options.name)+")",1)]),_:1}),t(r,{title:"Benutzername",required:"",subtype:"user","model-value":u.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Kennwort",required:"",subtype:"password","model-value":u.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),t(r,{title:"Land",required:"","model-value":u.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.country"))},{help:o(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),t(r,{title:"VIN","model-value":u.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const q=p(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{q as default}; diff --git a/web/settings/assets/vehicle-0969da15.js b/web/settings/assets/vehicle-cbd74ad8.js similarity index 91% rename from web/settings/assets/vehicle-0969da15.js rename to web/settings/assets/vehicle-cbd74ad8.js index 194ca25dbd..0b62f749fc 100644 --- a/web/settings/assets/vehicle-0969da15.js +++ b/web/settings/assets/vehicle-cbd74ad8.js @@ -1 +1 @@ -import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; +import{_ as p,p as d,k as m,l as c,A as t,L as o,u as a,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},v={class:"vehicle-soc-smarteq"},b={class:"small"};function h(r,e,i,w,q,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return m(),c("div",v,[t(l,null,{default:o(()=>[a(" Einstellungen für SmartEQ SoC "),f("span",b,"(Modul: "+_(r.$options.name)+")",1)]),_:1}),t(u,{title:"Benutzername",required:"",subtype:"user","model-value":i.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:o(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"Kennwort",required:"",subtype:"password","model-value":i.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:o(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(u,{title:"VIN",required:"","model-value":i.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:o(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const C=p(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{C as default}; diff --git a/web/settings/assets/vehicle-e7320818.js b/web/settings/assets/vehicle-e7320818.js new file mode 100644 index 0000000000..3a8fe77ca5 --- /dev/null +++ b/web/settings/assets/vehicle-e7320818.js @@ -0,0 +1 @@ +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-20bb207d.js";import{a as y}from"./vendor-axios-13ef03ae.js";import{C}from"./index-f08a7306.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/assets/vehicle-8bdcc244.js b/web/settings/assets/vehicle-ebf7e590.js similarity index 95% rename from web/settings/assets/vehicle-8bdcc244.js rename to web/settings/assets/vehicle-ebf7e590.js index 405327e7fb..f5b78d9b9d 100644 --- a/web/settings/assets/vehicle-8bdcc244.js +++ b/web/settings/assets/vehicle-ebf7e590.js @@ -1 +1 @@ -import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; +import{_ as g,p as a,k as h,l as f,A as n,L as o,u as t,q as r,x as d}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},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.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.configuration.client_id&&this.configuration.client_secret&&this.configuration.vin}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var l=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");l.focus()}}},w={class:"vehicle-soc-mercedeseq"},k={class:"small"},C=r("br",null,null,-1),y=r("br",null,null,-1),q=r("br",null,null,-1);function x(l,e,c,B,D,i){const p=a("openwb-base-heading"),u=a("openwb-base-text-input"),_=a("openwb-base-copy-to-clipboard"),b=a("openwb-base-alert"),m=a("openwb-base-button-input");return h(),f("div",w,[n(p,null,{default:o(()=>[t(" Einstellungen für Mercedes EQ SoC "),r("span",k,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(u,{title:"Client-ID",required:"",subtype:"user","model-value":c.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=s=>i.updateConfiguration(s,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),n(u,{title:"Client Secret",required:"",subtype:"password","model-value":c.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=s=>i.updateConfiguration(s,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),n(u,{title:"VIN",required:"","model-value":c.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=s=>i.updateConfiguration(s,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),n(b,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),C,t(" Die Callback-URL für die Anmeldung lautet:"),y,n(_,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(d(i.callback_url),1)]),_:1})]),_:1}),n(m,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!i.input_complete,onButtonClicked:i.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),q]),_:1},8,["disabled","onButtonClicked"])])}const I=g(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{I as default}; diff --git a/web/settings/assets/vehicle-316d265a.js b/web/settings/assets/vehicle-ef079f93.js similarity index 92% rename from web/settings/assets/vehicle-316d265a.js rename to web/settings/assets/vehicle-ef079f93.js index 224ae41541..acdc2a41c7 100644 --- a/web/settings/assets/vehicle-316d265a.js +++ b/web/settings/assets/vehicle-ef079f93.js @@ -1 +1 @@ -import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-94ac8c48.js";import"./vendor-sortablejs-dbc23470.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; +import{_ as c,p as d,k as p,l as m,A as o,L as t,u as a,q as f,x as _}from"./vendor-20bb207d.js";import"./vendor-sortablejs-ad1d2cc8.js";const g={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"vehicle-soc-skodaconnect"},b={class:"small"};function h(i,e,r,w,k,s){const l=d("openwb-base-heading"),u=d("openwb-base-text-input");return p(),m("div",v,[o(l,null,{default:t(()=>[a(" Einstellungen für Skoda iV SoC "),f("span",b,"(Modul: "+_(i.$options.name)+")",1)]),_:1}),o(u,{title:"Benutzername",required:"",subtype:"user","model-value":r.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.user_id"))},{help:t(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"Kennwort",required:"",subtype:"password","model-value":r.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.password"))},{help:t(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),o(u,{title:"VIN",required:"","model-value":r.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.vin"))},{help:t(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const V=c(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{V as default}; diff --git a/web/settings/assets/vendor-20bb207d.js b/web/settings/assets/vendor-20bb207d.js new file mode 100644 index 0000000000..0e0c5264c8 --- /dev/null +++ b/web/settings/assets/vendor-20bb207d.js @@ -0,0 +1,100 @@ +import{r as N4}from"./vendor-sortablejs-ad1d2cc8.js";var Ye=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Lo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function tv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){if(this instanceof i){var a=[null];a.push.apply(a,arguments);var n=Function.bind.apply(t,a);return new n}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},nh={};nh.byteLength=D4;nh.toByteArray=j4;nh.fromByteArray=q4;var Xi=[],ui=[],k4=typeof Uint8Array<"u"?Uint8Array:Array,Tc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ca=0,$4=Tc.length;Ca<$4;++Ca)Xi[Ca]=Tc[Ca],ui[Tc.charCodeAt(Ca)]=Ca;ui["-".charCodeAt(0)]=62;ui["_".charCodeAt(0)]=63;function $w(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function D4(e){var t=$w(e),r=t[0],i=t[1];return(r+i)*3/4-i}function F4(e,t,r){return(t+r)*3/4-r}function j4(e){var t,r=$w(e),i=r[0],a=r[1],n=new k4(F4(e,i,a)),u=0,c=a>0?i-4:i,d;for(d=0;d>16&255,n[u++]=t>>8&255,n[u++]=t&255;return a===2&&(t=ui[e.charCodeAt(d)]<<2|ui[e.charCodeAt(d+1)]>>4,n[u++]=t&255),a===1&&(t=ui[e.charCodeAt(d)]<<10|ui[e.charCodeAt(d+1)]<<4|ui[e.charCodeAt(d+2)]>>2,n[u++]=t>>8&255,n[u++]=t&255),n}function U4(e){return Xi[e>>18&63]+Xi[e>>12&63]+Xi[e>>6&63]+Xi[e&63]}function H4(e,t,r){for(var i,a=[],n=t;nc?c:u+n));return i===1?(t=e[r-1],a.push(Xi[t>>2]+Xi[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(Xi[t>>10]+Xi[t>>4&63]+Xi[t<<2&63]+"=")),a.join("")}var rv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */rv.read=function(e,t,r,i,a){var n,u,c=a*8-i-1,d=(1<>1,M=-7,S=r?a-1:0,R=r?-1:1,C=e[t+S];for(S+=R,n=C&(1<<-M)-1,C>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(u=n&(1<<-M)-1,n>>=-M,M+=i;M>0;u=u*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return u?NaN:(C?-1:1)*(1/0);u=u+Math.pow(2,i),n=n-m}return(C?-1:1)*u*Math.pow(2,n-i)};rv.write=function(e,t,r,i,a,n){var u,c,d,m=n*8-a-1,M=(1<>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,C=i?0:n-1,P=i?1:-1,k=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,u=M):(u=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-u))<1&&(u--,d*=2),u+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(u++,d/=2),u+S>=M?(c=0,u=M):u+S>=1?(c=(t*d-1)*Math.pow(2,a),u=u+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),u=0));a>=8;e[r+C]=c&255,C+=P,c/=256,a-=8);for(u=u<0;e[r+C]=u&255,C+=P,u/=256,m-=8);e[r+C-P]|=k*128};/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */(function(e){var t=nh,r=rv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=B,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.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 n(){try{var D=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(D,N),D.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(D){if(D>a)throw new RangeError('The value "'+D+'" is invalid for option "size"');var N=new Uint8Array(D);return Object.setPrototypeOf(N,c.prototype),N}function c(D,N,j){if(typeof D=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(D)}return d(D,N,j)}c.poolSize=8192;function d(D,N,j){if(typeof D=="string")return R(D,N);if(ArrayBuffer.isView(D))return P(D);if(D==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D);if(O(D,ArrayBuffer)||D&&O(D.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(O(D,SharedArrayBuffer)||D&&O(D.buffer,SharedArrayBuffer)))return k(D,N,j);if(typeof D=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=D.valueOf&&D.valueOf();if(z!=null&&z!==D)return c.from(z,N,j);var se=L(D);if(se)return se;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof D[Symbol.toPrimitive]=="function")return c.from(D[Symbol.toPrimitive]("string"),N,j);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof D)}c.from=function(D,N,j){return d(D,N,j)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(D){if(typeof D!="number")throw new TypeError('"size" argument must be of type number');if(D<0)throw new RangeError('The value "'+D+'" is invalid for option "size"')}function M(D,N,j){return m(D),D<=0?u(D):N!==void 0?typeof j=="string"?u(D).fill(N,j):u(D).fill(N):u(D)}c.alloc=function(D,N,j){return M(D,N,j)};function S(D){return m(D),u(D<0?0:I(D)|0)}c.allocUnsafe=function(D){return S(D)},c.allocUnsafeSlow=function(D){return S(D)};function R(D,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var j=H(D,N)|0,z=u(j),se=z.write(D,N);return se!==j&&(z=z.slice(0,se)),z}function C(D){for(var N=D.length<0?0:I(D.length)|0,j=u(N),z=0;z=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return D|0}function B(D){return+D!=D&&(D=0),c.alloc(+D)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,j){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),O(j,Uint8Array)&&(j=c.from(j,j.offset,j.byteLength)),!c.isBuffer(N)||!c.isBuffer(j))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===j)return 0;for(var z=N.length,se=j.length,te=0,ne=Math.min(z,se);tese.length?c.from(ne).copy(se,te):Uint8Array.prototype.set.call(se,ne,te);else if(c.isBuffer(ne))ne.copy(se,te);else throw new TypeError('"list" argument must be an Array of Buffers');te+=ne.length}return se};function H(D,N){if(c.isBuffer(D))return D.length;if(ArrayBuffer.isView(D)||O(D,ArrayBuffer))return D.byteLength;if(typeof D!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof D);var j=D.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&j===0)return 0;for(var se=!1;;)switch(N){case"ascii":case"latin1":case"binary":return j;case"utf8":case"utf-8":return U(D).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j*2;case"hex":return j>>>1;case"base64":return b(D).length;default:if(se)return z?-1:U(D).length;N=(""+N).toLowerCase(),se=!0}}c.byteLength=H;function F(D,N,j){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((j===void 0||j>this.length)&&(j=this.length),j<=0)||(j>>>=0,N>>>=0,j<=N))return"";for(D||(D="utf8");;)switch(D){case"hex":return g(this,N,j);case"utf8":case"utf-8":return l(this,N,j);case"ascii":return w(this,N,j);case"latin1":case"binary":return x(this,N,j);case"base64":return f(this,N,j);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,j);default:if(z)throw new TypeError("Unknown encoding: "+D);D=(D+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function W(D,N,j){var z=D[N];D[N]=D[j],D[j]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var j=0;jj&&(N+=" ... "),""},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,j,z,se,te){if(O(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(j===void 0&&(j=0),z===void 0&&(z=N?N.length:0),se===void 0&&(se=0),te===void 0&&(te=this.length),j<0||z>N.length||se<0||te>this.length)throw new RangeError("out of range index");if(se>=te&&j>=z)return 0;if(se>=te)return-1;if(j>=z)return 1;if(j>>>=0,z>>>=0,se>>>=0,te>>>=0,this===N)return 0;for(var ne=te-se,Ee=z-j,Q=Math.min(ne,Ee),ue=this.slice(se,te),le=N.slice(j,z),ce=0;ce2147483647?j=2147483647:j<-2147483648&&(j=-2147483648),j=+j,q(j)&&(j=se?0:D.length-1),j<0&&(j=D.length+j),j>=D.length){if(se)return-1;j=D.length-1}else if(j<0)if(se)j=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:ie(D,N,j,z,se);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?se?Uint8Array.prototype.indexOf.call(D,N,j):Uint8Array.prototype.lastIndexOf.call(D,N,j):ie(D,[N],j,z,se);throw new TypeError("val must be string, number or Buffer")}function ie(D,N,j,z,se){var te=1,ne=D.length,Ee=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(D.length<2||N.length<2)return-1;te=2,ne/=2,Ee/=2,j/=2}function Q(de,ae){return te===1?de[ae]:de.readUInt16BE(ae*te)}var ue;if(se){var le=-1;for(ue=j;uene&&(j=ne-Ee),ue=j;ue>=0;ue--){for(var ce=!0,pe=0;pese&&(z=se)):z=se;var te=N.length;z>te/2&&(z=te/2);for(var ne=0;ne>>0,isFinite(z)?(z=z>>>0,se===void 0&&(se="utf8")):(se=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var te=this.length-j;if((z===void 0||z>te)&&(z=te),N.length>0&&(z<0||j<0)||j>this.length)throw new RangeError("Attempt to write outside buffer bounds");se||(se="utf8");for(var ne=!1;;)switch(se){case"hex":return J(this,N,j,z);case"utf8":case"utf-8":return V(this,N,j,z);case"ascii":case"latin1":case"binary":return oe(this,N,j,z);case"base64":return _(this,N,j,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,j,z);default:if(ne)throw new TypeError("Unknown encoding: "+se);se=(""+se).toLowerCase(),ne=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(D,N,j){return N===0&&j===D.length?t.fromByteArray(D):t.fromByteArray(D.slice(N,j))}function l(D,N,j){j=Math.min(D.length,j);for(var z=[],se=N;se239?4:te>223?3:te>191?2:1;if(se+Ee<=j){var Q,ue,le,ce;switch(Ee){case 1:te<128&&(ne=te);break;case 2:Q=D[se+1],(Q&192)===128&&(ce=(te&31)<<6|Q&63,ce>127&&(ne=ce));break;case 3:Q=D[se+1],ue=D[se+2],(Q&192)===128&&(ue&192)===128&&(ce=(te&15)<<12|(Q&63)<<6|ue&63,ce>2047&&(ce<55296||ce>57343)&&(ne=ce));break;case 4:Q=D[se+1],ue=D[se+2],le=D[se+3],(Q&192)===128&&(ue&192)===128&&(le&192)===128&&(ce=(te&15)<<18|(Q&63)<<12|(ue&63)<<6|le&63,ce>65535&&ce<1114112&&(ne=ce))}}ne===null?(ne=65533,Ee=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),se+=Ee}return p(z)}var h=4096;function p(D){var N=D.length;if(N<=h)return String.fromCharCode.apply(String,D);for(var j="",z=0;zz)&&(j=z);for(var se="",te=N;tez&&(N=z),j<0?(j+=z,j<0&&(j=0)):j>z&&(j=z),jj)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N+--j],te=1;j>0&&(te*=256);)se+=this[N+--j]*te;return se},c.prototype.readUint8=c.prototype.readUInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,j){return N=N>>>0,j||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=this[N],te=1,ne=0;++ne=te&&(se-=Math.pow(2,8*j)),se},c.prototype.readIntBE=function(N,j,z){N=N>>>0,j=j>>>0,z||v(N,j,this.length);for(var se=j,te=1,ne=this[N+--se];se>0&&(te*=256);)ne+=this[N+--se]*te;return te*=128,ne>=te&&(ne-=Math.pow(2,8*j)),ne},c.prototype.readInt8=function(N,j){return N=N>>>0,j||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,j){N=N>>>0,j||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,j){return N=N>>>0,j||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,j){return N=N>>>0,j||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,j){return N=N>>>0,j||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(D,N,j,z,se,te){if(!c.isBuffer(D))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>se||ND.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=1,Ee=0;for(this[j]=N&255;++Ee>>0,z=z>>>0,!se){var te=Math.pow(2,8*z)-1;T(this,N,j,z,te,0)}var ne=z-1,Ee=1;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)this[j+ne]=N/Ee&255;return j+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,255,0),this[j]=N&255,j+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,65535,0),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j+3]=N>>>24,this[j+2]=N>>>16,this[j+1]=N>>>8,this[j]=N&255,j+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,4294967295,0),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4},c.prototype.writeIntLE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=0,Ee=1,Q=0;for(this[j]=N&255;++ne>0)-Q&255;return j+z},c.prototype.writeIntBE=function(N,j,z,se){if(N=+N,j=j>>>0,!se){var te=Math.pow(2,8*z-1);T(this,N,j,z,te-1,-te)}var ne=z-1,Ee=1,Q=0;for(this[j+ne]=N&255;--ne>=0&&(Ee*=256);)N<0&&Q===0&&this[j+ne+1]!==0&&(Q=1),this[j+ne]=(N/Ee>>0)-Q&255;return j+z},c.prototype.writeInt8=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,1,127,-128),N<0&&(N=255+N+1),this[j]=N&255,j+1},c.prototype.writeInt16LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N&255,this[j+1]=N>>>8,j+2},c.prototype.writeInt16BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,2,32767,-32768),this[j]=N>>>8,this[j+1]=N&255,j+2},c.prototype.writeInt32LE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),this[j]=N&255,this[j+1]=N>>>8,this[j+2]=N>>>16,this[j+3]=N>>>24,j+4},c.prototype.writeInt32BE=function(N,j,z){return N=+N,j=j>>>0,z||T(this,N,j,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[j]=N>>>24,this[j+1]=N>>>16,this[j+2]=N>>>8,this[j+3]=N&255,j+4};function $(D,N,j,z,se,te){if(j+z>D.length)throw new RangeError("Index out of range");if(j<0)throw new RangeError("Index out of range")}function G(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,4),r.write(D,N,j,z,23,4),j+4}c.prototype.writeFloatLE=function(N,j,z){return G(this,N,j,!0,z)},c.prototype.writeFloatBE=function(N,j,z){return G(this,N,j,!1,z)};function ee(D,N,j,z,se){return N=+N,j=j>>>0,se||$(D,N,j,8),r.write(D,N,j,z,52,8),j+8}c.prototype.writeDoubleLE=function(N,j,z){return ee(this,N,j,!0,z)},c.prototype.writeDoubleBE=function(N,j,z){return ee(this,N,j,!1,z)},c.prototype.copy=function(N,j,z,se){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!se&&se!==0&&(se=this.length),j>=N.length&&(j=N.length),j||(j=0),se>0&&se=this.length)throw new RangeError("Index out of range");if(se<0)throw new RangeError("sourceEnd out of bounds");se>this.length&&(se=this.length),N.length-j>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ne;if(typeof N=="number")for(ne=j;ne55295&&j<57344){if(!se){if(j>56319){(N-=3)>-1&&te.push(239,191,189);continue}else if(ne+1===z){(N-=3)>-1&&te.push(239,191,189);continue}se=j;continue}if(j<56320){(N-=3)>-1&&te.push(239,191,189),se=j;continue}j=(se-55296<<10|j-56320)+65536}else se&&(N-=3)>-1&&te.push(239,191,189);if(se=null,j<128){if((N-=1)<0)break;te.push(j)}else if(j<2048){if((N-=2)<0)break;te.push(j>>6|192,j&63|128)}else if(j<65536){if((N-=3)<0)break;te.push(j>>12|224,j>>6&63|128,j&63|128)}else if(j<1114112){if((N-=4)<0)break;te.push(j>>18|240,j>>12&63|128,j>>6&63|128,j&63|128)}else throw new Error("Invalid code point")}return te}function K(D){for(var N=[],j=0;j>8,se=j%256,te.push(se),te.push(z);return te}function b(D){return t.toByteArray(E(D))}function y(D,N,j,z){for(var se=0;se=N.length||se>=D.length);++se)N[se+j]=D[se];return se}function O(D,N){return D instanceof N||D!=null&&D.constructor!=null&&D.constructor.name!=null&&D.constructor.name===N.name}function q(D){return D!==D}var X=function(){for(var D="0123456789abcdef",N=new Array(256),j=0;j<16;++j)for(var z=j*16,se=0;se<16;++se)N[z+se]=D[j]+D[se];return N}()})(ke);var Dw={exports:{}},ir=Dw.exports={},Gi,Yi;function P0(){throw new Error("setTimeout has not been defined")}function C0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Gi=setTimeout:Gi=P0}catch{Gi=P0}try{typeof clearTimeout=="function"?Yi=clearTimeout:Yi=C0}catch{Yi=C0}})();function Fw(e){if(Gi===setTimeout)return setTimeout(e,0);if((Gi===P0||!Gi)&&setTimeout)return Gi=setTimeout,setTimeout(e,0);try{return Gi(e,0)}catch{try{return Gi.call(null,e,0)}catch{return Gi.call(this,e,0)}}}function W4(e){if(Yi===clearTimeout)return clearTimeout(e);if((Yi===C0||!Yi)&&clearTimeout)return Yi=clearTimeout,clearTimeout(e);try{return Yi(e)}catch{try{return Yi.call(null,e)}catch{return Yi.call(this,e)}}}var In=[],za=!1,Go,rl=-1;function K4(){!za||!Go||(za=!1,Go.length?In=Go.concat(In):rl=-1,In.length&&jw())}function jw(){if(!za){var e=Fw(K4);za=!0;for(var t=In.length;t;){for(Go=In,In=[];++rl1)for(var r=1;r!!r[a.toLowerCase()]:a=>!!r[a]}const $t=Object.freeze({}),Ga=Object.freeze([]),qr=()=>{},Hw=()=>!1,G4=/^on[^a-z]/,Ps=e=>G4.test(e),Sl=e=>e.startsWith("onUpdate:"),Pt=Object.assign,iv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},Y4=Object.prototype.hasOwnProperty,wt=(e,t)=>Y4.call(e,t),ze=Array.isArray,Qo=e=>Cs(e)==="[object Map]",ga=e=>Cs(e)==="[object Set]",am=e=>Cs(e)==="[object Date]",Z4=e=>Cs(e)==="[object RegExp]",Qe=e=>typeof e=="function",Vt=e=>typeof e=="string",Uf=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",oh=e=>Rt(e)&&Qe(e.then)&&Qe(e.catch),qw=Object.prototype.toString,Cs=e=>qw.call(e),nv=e=>Cs(e).slice(8,-1),Ww=e=>Cs(e)==="[object Object]",ov=e=>Vt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Af=Kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),X4=Kn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),ah=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},J4=/-(\w)/g,Kr=ah(e=>e.replace(J4,(t,r)=>r?r.toUpperCase():"")),Q4=/\B([A-Z])/g,Hr=ah(e=>e.replace(Q4,"-$1").toLowerCase()),_o=ah(e=>e.charAt(0).toUpperCase()+e.slice(1)),xn=ah(e=>e?`on${_o(e)}`:""),as=(e,t)=>!Object.is(e,t),so=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},El=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Rl=e=>{const t=Vt(e)?Number(e):NaN;return isNaN(t)?e:t};let sm;const Al=()=>sm||(sm=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof ho<"u"?ho:{}),eE="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",tE=Kn(eE);function Pn(e){if(ze(e)){const t={};for(let r=0;r{if(r){const i=r.split(iE);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function vr(e){let t="";if(Vt(e))t=e;else if(ze(e))for(let r=0;rMo(r,t))}const si=e=>Vt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===qw||!Qe(e.toString))?JSON.stringify(e,Vw,2):String(e),Vw=(e,t)=>t&&t.__v_isRef?Vw(e,t.value):Qo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a])=>(r[`${i} =>`]=a,r),{})}:ga(t)?{[`Set(${t.size})`]:[...t.values()]}:Rt(t)&&!ze(t)&&!Ww(t)?String(t):t;function Tl(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Yr;class av{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Yr,!t&&Yr&&(this.index=(Yr.scopes||(Yr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Yr;try{return Yr=this,t()}finally{Yr=r}}else Tl("cannot run an inactive effect scope.")}on(){Yr=this}off(){Yr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r{const t=new Set(e);return t.w=0,t.n=0,t},Zw=e=>(e.w&So)>0,Xw=e=>(e.n&So)>0,vE=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let r=0;for(let i=0;i{(S==="length"||S>=m)&&c.push(M)})}else switch(r!==void 0&&c.push(u.get(r)),t){case"add":ze(e)?ov(r)&&c.push(u.get("length")):(c.push(u.get(ea)),Qo(e)&&c.push(u.get(L0)));break;case"delete":ze(e)||(c.push(u.get(ea)),Qo(e)&&c.push(u.get(L0)));break;case"set":Qo(e)&&c.push(u.get(ea));break}const d={target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n};if(c.length===1)c[0]&&N0(c[0],d);else{const m=[];for(const M of c)M&&m.push(...M);N0(sv(m),d)}}function N0(e,t){const r=ze(e)?e:[...e];for(const i of r)i.computed&&um(i,t);for(const i of r)i.computed||um(i,t)}function um(e,t){(e!==Br||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(Pt({effect:e},t)),e.scheduler?e.scheduler():e.run())}function bE(e,t){var r;return(r=Ol.get(e))==null?void 0:r.get(t)}const wE=Kn("__proto__,__v_isRef,__isVue"),e2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Uf)),_E=fh(),ME=fh(!1,!0),SE=fh(!0),xE=fh(!0,!0),lm=EE();function EE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=lt(this);for(let n=0,u=this.length;n{e[t]=function(...r){ma();const i=lt(this)[t].apply(this,r);return ya(),i}}),e}function RE(e){const t=lt(this);return Tr(t,"has",e),t.hasOwnProperty(e)}function fh(e=!1,t=!1){return function(i,a,n){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return t;if(a==="__v_raw"&&n===(e?t?f2:s2:t?a2:o2).get(i))return i;const u=ze(i);if(!e){if(u&&wt(lm,a))return Reflect.get(lm,a,n);if(a==="hasOwnProperty")return RE}const c=Reflect.get(i,a,n);return(Uf(a)?e2.has(a):wE(a))||(e||Tr(i,"get",a),t)?c:Xt(c)?u&&ov(a)?c:c.value:Rt(c)?e?uv(c):No(c):c}}const AE=t2(),TE=t2(!0);function t2(e=!1){return function(r,i,a,n){let u=r[i];if(Ln(u)&&Xt(u)&&!Xt(a))return!1;if(!e&&(!Hf(a)&&!Ln(a)&&(u=lt(u),a=lt(a)),!ze(r)&&Xt(u)&&!Xt(a)))return u.value=a,!0;const c=ze(r)&&ov(i)?Number(i)e,uh=e=>Reflect.getPrototypeOf(e);function Du(e,t,r=!1,i=!1){e=e.__v_raw;const a=lt(e),n=lt(t);r||(t!==n&&Tr(a,"get",t),Tr(a,"get",n));const{has:u}=uh(a),c=i?fv:r?hv:Wf;if(u.call(a,t))return c(e.get(t));if(u.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function Fu(e,t=!1){const r=this.__v_raw,i=lt(r),a=lt(e);return t||(e!==a&&Tr(i,"has",e),Tr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function ju(e,t=!1){return e=e.__v_raw,!t&&Tr(lt(e),"iterate",ea),Reflect.get(e,"size",e)}function hm(e){e=lt(e);const t=lt(this);return uh(t).has.call(t,e)||(t.add(e),an(t,"add",e,e)),this}function cm(e,t){t=lt(t);const r=lt(this),{has:i,get:a}=uh(r);let n=i.call(r,e);n?n2(r,i,e):(e=lt(e),n=i.call(r,e));const u=a.call(r,e);return r.set(e,t),n?as(t,u)&&an(r,"set",e,t,u):an(r,"add",e,t),this}function dm(e){const t=lt(this),{has:r,get:i}=uh(t);let a=r.call(t,e);a?n2(t,r,e):(e=lt(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,u=t.delete(e);return a&&an(t,"delete",e,void 0,n),u}function pm(){const e=lt(this),t=e.size!==0,r=Qo(e)?new Map(e):new Set(e),i=e.clear();return t&&an(e,"clear",void 0,void 0,r),i}function Uu(e,t){return function(i,a){const n=this,u=n.__v_raw,c=lt(u),d=t?fv:e?hv:Wf;return!e&&Tr(c,"iterate",ea),u.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Hu(e,t,r){return function(...i){const a=this.__v_raw,n=lt(a),u=Qo(n),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,m=a[e](...i),M=r?fv:t?hv:Wf;return!t&&Tr(n,"iterate",d?L0:ea),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function Xn(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${_o(e)} operation ${r}failed: target is readonly.`,lt(this))}return e==="delete"?!1:this}}function LE(){const e={get(n){return Du(this,n)},get size(){return ju(this)},has:Fu,add:hm,set:cm,delete:dm,clear:pm,forEach:Uu(!1,!1)},t={get(n){return Du(this,n,!1,!0)},get size(){return ju(this)},has:Fu,add:hm,set:cm,delete:dm,clear:pm,forEach:Uu(!1,!0)},r={get(n){return Du(this,n,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!1)},i={get(n){return Du(this,n,!0,!0)},get size(){return ju(this,!0)},has(n){return Fu.call(this,n,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Uu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Hu(n,!1,!1),r[n]=Hu(n,!0,!1),t[n]=Hu(n,!1,!0),i[n]=Hu(n,!0,!0)}),[e,r,t,i]}const[NE,kE,$E,DE]=LE();function lh(e,t){const r=t?e?DE:$E:e?kE:NE;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(wt(r,a)&&a in i?r:i,a,n)}const FE={get:lh(!1,!1)},jE={get:lh(!1,!0)},UE={get:lh(!0,!1)},HE={get:lh(!0,!0)};function n2(e,t,r){const i=lt(r);if(i!==r&&t.call(e,i)){const a=nv(e);console.warn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="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 o2=new WeakMap,a2=new WeakMap,s2=new WeakMap,f2=new WeakMap;function qE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function WE(e){return e.__v_skip||!Object.isExtensible(e)?0:qE(nv(e))}function No(e){return Ln(e)?e:hh(e,!1,r2,FE,o2)}function u2(e){return hh(e,!1,CE,jE,a2)}function uv(e){return hh(e,!0,i2,UE,s2)}function Wa(e){return hh(e,!0,BE,HE,f2)}function hh(e,t,r,i,a){if(!Rt(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const u=WE(e);if(u===0)return e;const c=new Proxy(e,u===2?i:r);return a.set(e,c),c}function po(e){return Ln(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Ln(e){return!!(e&&e.__v_isReadonly)}function Hf(e){return!!(e&&e.__v_isShallow)}function qf(e){return po(e)||Ln(e)}function lt(e){const t=e&&e.__v_raw;return t?lt(t):e}function lv(e){return xl(e,"__v_skip",!0),e}const Wf=e=>Rt(e)?No(e):e,hv=e=>Rt(e)?uv(e):e;function cv(e){co&&Br&&(e=lt(e),Qw(e.dep||(e.dep=sv()),{target:e,type:"get",key:"value"}))}function ch(e,t){e=lt(e);const r=e.dep;r&&N0(r,{target:e,type:"set",key:"value",newValue:t})}function Xt(e){return!!(e&&e.__v_isRef===!0)}function mr(e){return h2(e,!1)}function l2(e){return h2(e,!0)}function h2(e,t){return Xt(e)?e:new KE(e,t)}class KE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:lt(t),this._value=r?t:Wf(t)}get value(){return cv(this),this._value}set value(t){const r=this.__v_isShallow||Hf(t)||Ln(t);t=r?t:lt(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Wf(t),ch(this,t))}}function VE(e){ch(e,e.value)}function vo(e){return Xt(e)?e.value:e}function zE(e){return Qe(e)?e():vo(e)}const GE={get:(e,t,r)=>vo(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return Xt(a)&&!Xt(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function dv(e){return po(e)?e:new Proxy(e,GE)}class YE{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>cv(this),()=>ch(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function ZE(e){return new YE(e)}function XE(e){qf(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=c2(e,r);return t}class JE{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return bE(lt(this._object),this._key)}}class QE{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function e8(e,t,r){return Xt(e)?e:Qe(e)?new QE(e):Rt(e)&&arguments.length>1?c2(e,t,r):mr(e)}function c2(e,t,r){const i=e[t];return Xt(i)?i:new JE(e,t,r)}class t8{constructor(t,r,i,a){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new uu(t,()=>{this._dirty||(this._dirty=!0,ch(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=lt(this);return cv(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function r8(e,t,r=!1){let i,a;const n=Qe(e);n?(i=e,a=()=>{console.warn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const u=new t8(i,a,n||!a,r);return t&&!r&&(u.effect.onTrack=t.onTrack,u.effect.onTrigger=t.onTrigger),u}const ta=[];function Tf(e){ta.push(e)}function Of(){ta.pop()}function Ue(e,...t){ma();const r=ta.length?ta[ta.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=i8();if(i)en(i,r,11,[e+t.join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Sh(r,n.type)}>`).join(` +`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(` +`,...n8(a)),console.warn(...n)}ya()}function i8(){let e=ta[ta.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function n8(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[` +`],...o8(r))}),t}function o8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Sh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...a8(e.props),n]:[a+n]}function a8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...d2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function d2(e,t,r){return Vt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:Xt(t)?(t=d2(e,lt(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=lt(t),r?t:[`${e}=`,t])}function pv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const vv={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. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function en(e,t,r,i){let a;try{a=i?e(...i):e()}catch(n){ba(n,t,r)}return a}function Zr(e,t,r,i){if(Qe(e)){const n=en(e,t,r,i);return n&&oh(n)&&n.catch(u=>{ba(u,t,r)}),n}const a=[];for(let n=0;n>>1;Vf(Er[i])Ji&&Er.splice(t,1)}function dh(e){ze(e)?Ya.push(...e):(!zi||!zi.includes(e,e.allowRecurse?io+1:io))&&Ya.push(e),v2()}function vm(e,t=Kf?Ji+1:0){for(e=e||new Map;tVf(r)-Vf(i)),io=0;ioe.id==null?1/0:e.id,h8=(e,t)=>{const r=Vf(e)-Vf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function g2(e){k0=!1,Kf=!0,e=e||new Map,Er.sort(h8);const t=r=>mv(e,r);try{for(Ji=0;Jif8){const i=t.ownerInstance,a=i&&Xf(i.type);return Ue(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. 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.`),!0}else e.set(t,r+1)}}let go=!1;const ja=new Set;Al().__VUE_HMR_RUNTIME__={createRecord:Oc(m2),rerender:Oc(p8),reload:Oc(v8)};const sa=new Map;function c8(e){const t=e.type.__hmrId;let r=sa.get(t);r||(m2(t,e.type),r=sa.get(t)),r.instances.add(e)}function d8(e){sa.get(e.type.__hmrId).instances.delete(e)}function m2(e,t){return sa.has(e)?!1:(sa.set(e,{initialDef:If(t),instances:new Set}),!0)}function If(e){return h_(e)?e.__vccOpts:e}function p8(e,t){const r=sa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,If(i.type).render=t),i.renderCache=[],go=!0,i.update(),go=!1}))}function v8(e,t){const r=sa.get(e);if(!r)return;t=If(t),gm(r.initialDef,t);const i=[...r.instances];for(const a of i){const n=If(a.type);ja.has(n)||(n!==r.initialDef&&gm(n,t),ja.add(n)),a.appContext.propsCache.delete(a.type),a.appContext.emitsCache.delete(a.type),a.appContext.optionsCache.delete(a.type),a.ceReload?(ja.add(n),a.ceReload(t.styles),ja.delete(n)):a.parent?lu(a.parent.update):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}dh(()=>{for(const a of i)ja.delete(If(a.type))})}function gm(e,t){Pt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Oc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bi,wf=[],$0=!1;function hu(e,...t){Bi?Bi.emit(e,...t):$0||wf.push({event:e,args:t})}function yv(e,t){var r,i;Bi=e,Bi?(Bi.enabled=!0,wf.forEach(({event:a,args:n})=>Bi.emit(a,...n)),wf=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{yv(n,t)}),setTimeout(()=>{Bi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,$0=!0,wf=[])},3e3)):($0=!0,wf=[])}function g8(e,t){hu("app:init",e,t,{Fragment:Lt,Text:xo,Comment:rr,Static:mo})}function m8(e){hu("app:unmount",e)}const D0=bv("component:added"),y2=bv("component:updated"),y8=bv("component:removed"),b8=e=>{Bi&&typeof Bi.cleanupBuffer=="function"&&!Bi.cleanupBuffer(e)&&y8(e)};function bv(e){return t=>{hu(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const w8=b2("perf:start"),_8=b2("perf:end");function b2(e){return(t,r,i)=>{hu(e,t.appContext.app,t.uid,t,r,i)}}function M8(e,t,r){hu("component:emit",e.appContext.app,e,t,r)}function S8(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||$t;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(xn(t)in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${xn(t)}" prop.`);else{const R=M[t];Qe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),u=n&&t.slice(7);if(u&&u in i){const M=`${u==="modelValue"?"model":u}Modifiers`,{number:S,trim:R}=i[M]||$t;R&&(a=r.map(C=>Vt(C)?C.trim():C)),S&&(a=r.map(El))}M8(e,t,a);{const M=t.toLowerCase();M!==t&&i[xn(M)]&&Ue(`Event "${M}" is emitted in component ${Sh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Hr(t)}" instead of "${t}".`)}let c,d=i[c=xn(t)]||i[c=xn(Kr(t))];!d&&n&&(d=i[c=xn(Hr(t))]),d&&Zr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Zr(m,e,6,a)}}function w2(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let u={},c=!1;if(!Qe(e)){const d=m=>{const M=w2(m,t,!0);M&&(c=!0,Pt(u,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>u[d]=null):Pt(u,n),Rt(e)&&i.set(e,u),u)}function ph(e,t){return!e||!Ps(t)?!1:(t=t.slice(2).replace(/Once$/,""),wt(e,t[0].toLowerCase()+t.slice(1))||wt(e,Hr(t))||wt(e,t))}let tr=null,vh=null;function zf(e){const t=tr;return tr=e,vh=e&&e.type.__scopeId||null,t}function _2(e){vh=e}function M2(){vh=null}const x8=e=>wv;function wv(e,t=tr,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&z0(-1);const n=zf(t);let u;try{u=e(...a)}finally{zf(n),i._d&&z0(1)}return y2(t),u};return i._n=!0,i._c=!0,i._d=!0,i}let F0=!1;function Pl(){F0=!0}function il(e){const{type:t,vnode:r,proxy:i,withProxy:a,props:n,propsOptions:[u],slots:c,attrs:d,emit:m,render:M,renderCache:S,data:R,setupState:C,ctx:P,inheritAttrs:k}=e;let L,I;const B=zf(e);F0=!1;try{if(r.shapeFlag&4){const W=a||i;L=Ur(M.call(W,W,S,n,C,R,P)),I=d}else{const W=t;d===n&&Pl(),L=Ur(W.length>1?W(n,{get attrs(){return Pl(),d},slots:c,emit:m}):W(n,null)),I=t.props?d:R8(d)}}catch(W){Bf.length=0,ba(W,e,1),L=Zt(rr)}let H=L,F;if(L.patchFlag>0&&L.patchFlag&2048&&([H,F]=E8(L)),I&&k!==!1){const W=Object.keys(I),{shapeFlag:Y}=H;if(W.length){if(Y&7)u&&W.some(Sl)&&(I=A8(I,u)),H=di(H,I);else if(!F0&&H.type!==rr){const ie=Object.keys(d),J=[],V=[];for(let oe=0,_=ie.length;oe<_;oe++){const o=ie[oe];Ps(o)?Sl(o)||J.push(o[2].toLowerCase()+o.slice(3)):V.push(o)}V.length&&Ue(`Extraneous non-props attributes (${V.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(mm(H)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),H=di(H),H.dirs=H.dirs?H.dirs.concat(r.dirs):r.dirs),r.transition&&(mm(H)||Ue("Component inside renders non-element root node that cannot be animated."),H.transition=r.transition),F?F(H):L=H,zf(B),L}const E8=e=>{const t=e.children,r=e.dynamicChildren,i=_v(t);if(!i)return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,u=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Ur(i),u]};function _v(e){let t;for(let r=0;r{let t;for(const r in e)(r==="class"||r==="style"||Ps(r))&&((t||(t={}))[r]=e[r]);return t},A8=(e,t)=>{const r={};for(const i in e)(!Sl(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},mm=e=>e.shapeFlag&7||e.type===rr;function T8(e,t,r){const{props:i,children:a,component:n}=e,{props:u,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&go||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?ym(i,u,m):!!u;if(d&8){const M=t.dynamicProps;for(let S=0;Se.__isSuspense,O8={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,u,c,d,m){e==null?P8(t,r,i,a,n,u,c,d,m):C8(e,t,r,i,a,u,c,d,m)},hydrate:B8,create:Sv,normalize:L8},I8=O8;function Gf(e,t){const r=e.props&&e.props[t];Qe(r)&&r()}function P8(e,t,r,i,a,n,u,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=Sv(e,a,i,t,S,r,n,u,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,u),R.deps>0?(Gf(e,"onPending"),Gf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,u),Za(R,e.ssFallback)):R.resolve(!1,!0)}function C8(e,t,r,i,a,n,u,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,C=t.ssFallback,{activeBranch:P,pendingBranch:k,isInFallback:L,isHydrating:I}=S;if(k)S.pendingBranch=R,Li(R,k)?(d(k,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():L&&(d(P,C,r,i,a,null,n,u,c),Za(S,C))):(S.pendingId++,I?(S.isHydrating=!1,S.activeBranch=k):m(k,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0?S.resolve():(d(P,C,r,i,a,null,n,u,c),Za(S,C))):P&&Li(R,P)?(d(P,R,r,i,a,S,n,u,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0&&S.resolve()));else if(P&&Li(R,P))d(P,R,r,i,a,S,n,u,c),Za(S,R);else if(Gf(t,"onPending"),S.pendingBranch=R,S.pendingId++,d(null,R,S.hiddenContainer,null,a,S,n,u,c),S.deps<=0)S.resolve();else{const{timeout:B,pendingId:H}=S;B>0?setTimeout(()=>{S.pendingId===H&&S.fallback(C)},B):B===0&&S.fallback(C)}}let bm=!1;function Sv(e,t,r,i,a,n,u,c,d,m,M=!1){bm||(bm=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:S,m:R,um:C,n:P,o:{parentNode:k,remove:L}}=m;let I;const B=N8(e);B&&t!=null&&t.pendingBranch&&(I=t.pendingId,t.deps++);const H=e.props?Rl(e.props.timeout):void 0;pv(H,"Suspense timeout");const F={vnode:e,parent:t,parentComponent:r,isSVG:u,container:i,hiddenContainer:a,anchor:n,deps:0,pendingId:0,timeout:typeof H=="number"?H:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:M,isUnmounted:!1,effects:[],resolve(W=!1,Y=!1){{if(!W&&!F.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(F.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:ie,activeBranch:J,pendingBranch:V,pendingId:oe,effects:_,parentComponent:o,container:f}=F;if(F.isHydrating)F.isHydrating=!1;else if(!W){const p=J&&V.transition&&V.transition.mode==="out-in";p&&(J.transition.afterLeave=()=>{oe===F.pendingId&&R(V,f,w,0)});let{anchor:w}=F;J&&(w=P(J),C(J,o,F,!0)),p||R(V,f,w,0)}Za(F,V),F.pendingBranch=null,F.isInFallback=!1;let l=F.parent,h=!1;for(;l;){if(l.pendingBranch){l.effects.push(..._),h=!0;break}l=l.parent}h||dh(_),F.effects=[],B&&t&&t.pendingBranch&&I===t.pendingId&&(t.deps--,t.deps===0&&!Y&&t.resolve()),Gf(ie,"onResolve")},fallback(W){if(!F.pendingBranch)return;const{vnode:Y,activeBranch:ie,parentComponent:J,container:V,isSVG:oe}=F;Gf(Y,"onFallback");const _=P(ie),o=()=>{F.isInFallback&&(S(null,W,V,_,J,null,oe,c,d),Za(F,W))},f=W.transition&&W.transition.mode==="out-in";f&&(ie.transition.afterLeave=o),F.isInFallback=!0,C(ie,J,null,!0),f||o()},move(W,Y,ie){F.activeBranch&&R(F.activeBranch,W,Y,ie),F.container=W},next(){return F.activeBranch&&P(F.activeBranch)},registerDep(W,Y){const ie=!!F.pendingBranch;ie&&F.deps++;const J=W.vnode.el;W.asyncDep.catch(V=>{ba(V,W,0)}).then(V=>{if(W.isUnmounted||F.isUnmounted||F.pendingId!==W.suspenseId)return;W.asyncResolved=!0;const{vnode:oe}=W;Tf(oe),Z0(W,V,!1),J&&(oe.el=J);const _=!J&&W.subTree.el;Y(W,oe,k(J||W.subTree.el),J?null:P(W.subTree),F,u,d),_&&L(_),Mv(W,oe.el),Of(),ie&&--F.deps===0&&F.resolve()})},unmount(W,Y){F.isUnmounted=!0,F.activeBranch&&C(F.activeBranch,r,W,Y),F.pendingBranch&&C(F.pendingBranch,r,W,Y)}};return F}function B8(e,t,r,i,a,n,u,c,d){const m=t.suspense=Sv(t,i,r,e.parentNode,document.createElement("div"),null,a,n,u,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,u);return m.deps===0&&m.resolve(!1,!0),M}function L8(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=wm(i?r.default:r),e.ssFallback=i?wm(r.fallback):Zt(rr)}function wm(e){let t;if(Qe(e)){const r=ua&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Wr,e_())}if(ze(e)){const r=_v(e);r||Ue(" slots expect a single root node."),e=r}return e=Ur(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function x2(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):dh(e)}function Za(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e,a=r.el=t.el;i&&i.subTree===r&&(i.vnode.el=a,Mv(i,a))}function N8(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function E2(e,t){return cu(e,null,t)}function R2(e,t){return cu(e,null,Pt({},t,{flush:"post"}))}function k8(e,t){return cu(e,null,Pt({},t,{flush:"sync"}))}const qu={};function lr(e,t,r){return Qe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),cu(e,t,r)}function cu(e,t,{immediate:r,deep:i,flush:a,onTrack:n,onTrigger:u}=$t){var c;t||(r!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const d=W=>{Ue("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=Yw()===((c=er)==null?void 0:c.scope)?er:null;let M,S=!1,R=!1;if(Xt(e)?(M=()=>e.value,S=Hf(e)):po(e)?(M=()=>e,i=!0):ze(e)?(R=!0,S=e.some(W=>po(W)||Hf(W)),M=()=>e.map(W=>{if(Xt(W))return W.value;if(po(W))return Yo(W);if(Qe(W))return en(W,m,2);d(W)})):Qe(e)?t?M=()=>en(e,m,2):M=()=>{if(!(m&&m.isUnmounted))return C&&C(),Zr(e,m,3,[P])}:(M=qr,d(e)),t&&i){const W=M;M=()=>Yo(W())}let C,P=W=>{C=H.onStop=()=>{en(W,m,4)}},k;if(fs)if(P=qr,t?r&&Zr(t,m,3,[M(),R?[]:void 0,P]):M(),a==="sync"){const W=d_();k=W.__watcherHandles||(W.__watcherHandles=[])}else return qr;let L=R?new Array(e.length).fill(qu):qu;const I=()=>{if(H.active)if(t){const W=H.run();(i||S||(R?W.some((Y,ie)=>as(Y,L[ie])):as(W,L)))&&(C&&C(),Zr(t,m,3,[W,L===qu?void 0:R&&L[0]===qu?[]:L,P]),L=W)}else H.run()};I.allowRecurse=!!t;let B;a==="sync"?B=I:a==="post"?B=()=>gr(I,m&&m.suspense):(I.pre=!0,m&&(I.id=m.uid),B=()=>lu(I));const H=new uu(M,B);H.onTrack=n,H.onTrigger=u,t?r?I():L=H.run():a==="post"?gr(H.run.bind(H),m&&m.suspense):H.run();const F=()=>{H.stop(),m&&m.scope&&iv(m.scope.effects,H)};return k&&k.push(F),F}function $8(e,t,r){const i=this.proxy,a=Vt(e)?e.includes(".")?A2(i,e):()=>i[e]:e.bind(i,i);let n;Qe(t)?n=t:(n=t.handler,r=t);const u=er;Eo(this);const c=cu(a,n.bind(i),r);return u?Eo(u):yo(),c}function A2(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a{Yo(r,t)});else if(Ww(e))for(const r in e)Yo(e[r],t);return e}function T2(e){X4(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function nl(e,t){const r=tr;if(r===null)return Ue("withDirectives can only be used inside render functions."),e;const i=Mh(r)||r.proxy,a=e.dirs||(e.dirs=[]);for(let n=0;n{e.isMounted=!0}),bh(()=>{e.isUnmounting=!0}),e}const ni=[Function,Array],Ev={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ni,onEnter:ni,onAfterEnter:ni,onEnterCancelled:ni,onBeforeLeave:ni,onLeave:ni,onAfterLeave:ni,onLeaveCancelled:ni,onBeforeAppear:ni,onAppear:ni,onAfterAppear:ni,onAppearCancelled:ni},D8={name:"BaseTransition",props:Ev,setup(e,{slots:t}){const r=Fi(),i=xv();let a;return()=>{const n=t.default&&gh(t.default(),!0);if(!n||!n.length)return;let u=n[0];if(n.length>1){let k=!1;for(const L of n)if(L.type!==rr){if(k){Ue(" can only be used on a single element or component. Use for lists.");break}u=L,k=!0}}const c=lt(e),{mode:d}=c;if(d&&d!=="in-out"&&d!=="out-in"&&d!=="default"&&Ue(`invalid mode: ${d}`),i.isLeaving)return Ic(u);const m=_m(u);if(!m)return Ic(u);const M=ss(m,c,i,r);fa(m,M);const S=r.subTree,R=S&&_m(S);let C=!1;const{getTransitionKey:P}=m.type;if(P){const k=P();a===void 0?a=k:k!==a&&(a=k,C=!0)}if(R&&R.type!==rr&&(!Li(m,R)||C)){const k=ss(R,c,i,r);if(fa(R,k),d==="out-in")return i.isLeaving=!0,k.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&r.update()},Ic(u);d==="in-out"&&m.type!==rr&&(k.delayLeave=(L,I,B)=>{const H=I2(i,R);H[String(R.key)]=R,L._leaveCb=()=>{I(),L._leaveCb=void 0,delete M.delayedLeave},M.delayedLeave=B})}return u}}},O2=D8;function I2(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ss(e,t,r,i){const{appear:a,mode:n,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:m,onEnterCancelled:M,onBeforeLeave:S,onLeave:R,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:k,onAppear:L,onAfterAppear:I,onAppearCancelled:B}=t,H=String(e.key),F=I2(r,e),W=(J,V)=>{J&&Zr(J,i,9,V)},Y=(J,V)=>{const oe=V[1];W(J,V),ze(J)?J.every(_=>_.length<=1)&&oe():J.length<=1&&oe()},ie={mode:n,persisted:u,beforeEnter(J){let V=c;if(!r.isMounted)if(a)V=k||c;else return;J._leaveCb&&J._leaveCb(!0);const oe=F[H];oe&&Li(e,oe)&&oe.el._leaveCb&&oe.el._leaveCb(),W(V,[J])},enter(J){let V=d,oe=m,_=M;if(!r.isMounted)if(a)V=L||d,oe=I||m,_=B||M;else return;let o=!1;const f=J._enterCb=l=>{o||(o=!0,l?W(_,[J]):W(oe,[J]),ie.delayedLeave&&ie.delayedLeave(),J._enterCb=void 0)};V?Y(V,[J,f]):f()},leave(J,V){const oe=String(e.key);if(J._enterCb&&J._enterCb(!0),r.isUnmounting)return V();W(S,[J]);let _=!1;const o=J._leaveCb=f=>{_||(_=!0,V(),f?W(P,[J]):W(C,[J]),J._leaveCb=void 0,F[oe]===e&&delete F[oe])};F[oe]=e,R?Y(R,[J,o]):o()},clone(J){return ss(J,t,r,i)}};return ie}function Ic(e){if(Ls(e))return e=di(e),e.children=null,e}function _m(e){return Ls(e)?e.children?e.children[0]:void 0:e}function fa(e,t){e.shapeFlag&6&&e.component?fa(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 gh(e,t=!1,r){let i=[],a=0;for(let n=0;n1)for(let n=0;nPt({name:e.name},t,{setup:e}))():e}const ra=e=>!!e.type.__asyncLoader;function F8(e){Qe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:u=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let C;return d||(C=d=t().catch(P=>{if(P=P instanceof Error?P:new Error(String(P)),c)return new Promise((k,L)=>{c(P,()=>k(S()),()=>L(P),M+1)});throw P}).then(P=>{if(C!==d&&d)return d;if(P||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),P&&(P.__esModule||P[Symbol.toStringTag]==="Module")&&(P=P.default),P&&!Rt(P)&&!Qe(P))throw new Error(`Invalid async component load result: ${P}`);return m=P,P}))};return Bs({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const C=er;if(m)return()=>Pc(m,C);const P=B=>{d=null,ba(B,C,13,!i)};if(u&&C.suspense||fs)return R().then(B=>()=>Pc(B,C)).catch(B=>(P(B),()=>i?Zt(i,{error:B}):null));const k=mr(!1),L=mr(),I=mr(!!a);return a&&setTimeout(()=>{I.value=!1},a),n!=null&&setTimeout(()=>{if(!k.value&&!L.value){const B=new Error(`Async component timed out after ${n}ms.`);P(B),L.value=B}},n),R().then(()=>{k.value=!0,C.parent&&Ls(C.parent.vnode)&&lu(C.parent.update)}).catch(B=>{P(B),L.value=B}),()=>{if(k.value&&m)return Pc(m,C);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!I.value)return Zt(r)}}})}function Pc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,u=Zt(e,i,a);return u.ref=r,u.ce=n,delete t.vnode.ce,u}const Ls=e=>e.type.__isKeepAlive,j8={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=Fi(),i=r.ctx;if(!i.renderer)return()=>{const B=t.default&&t.default();return B&&B.length===1?B[0]:B};const a=new Map,n=new Set;let u=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(B,H,F,W,Y)=>{const ie=B.component;m(B,H,F,0,c),d(ie.vnode,B,H,F,ie,c,W,B.slotScopeIds,Y),gr(()=>{ie.isDeactivated=!1,ie.a&&so(ie.a);const J=B.props&&B.props.onVnodeMounted;J&&Dr(J,ie.parent,B)},c),D0(ie)},i.deactivate=B=>{const H=B.component;m(B,R,null,1,c),gr(()=>{H.da&&so(H.da);const F=B.props&&B.props.onVnodeUnmounted;F&&Dr(F,H.parent,B),H.isDeactivated=!0},c),D0(H)};function C(B){Cc(B),M(B,r,c,!0)}function P(B){a.forEach((H,F)=>{const W=Xf(H.type);W&&(!B||!B(W))&&k(F)})}function k(B){const H=a.get(B);!u||!Li(H,u)?C(H):u&&Cc(u),a.delete(B),n.delete(B)}lr(()=>[e.include,e.exclude],([B,H])=>{B&&P(F=>_f(B,F)),H&&P(F=>!_f(H,F))},{flush:"post",deep:!0});let L=null;const I=()=>{L!=null&&a.set(L,Bc(r.subTree))};return Ns(I),yh(I),bh(()=>{a.forEach(B=>{const{subTree:H,suspense:F}=r,W=Bc(H);if(B.type===W.type&&B.key===W.key){Cc(W);const Y=W.component.da;Y&&gr(Y,F);return}C(B)})}),()=>{if(L=null,!t.default)return null;const B=t.default(),H=B[0];if(B.length>1)return Ue("KeepAlive should contain exactly one component child."),u=null,B;if(!Nn(H)||!(H.shapeFlag&4)&&!(H.shapeFlag&128))return u=null,H;let F=Bc(H);const W=F.type,Y=Xf(ra(F)?F.type.__asyncResolved||{}:W),{include:ie,exclude:J,max:V}=e;if(ie&&(!Y||!_f(ie,Y))||J&&Y&&_f(J,Y))return u=F,H;const oe=F.key==null?W:F.key,_=a.get(oe);return F.el&&(F=di(F),H.shapeFlag&128&&(H.ssContent=F)),L=oe,_?(F.el=_.el,F.component=_.component,F.transition&&fa(F,F.transition),F.shapeFlag|=512,n.delete(oe),n.add(oe)):(n.add(oe),V&&n.size>parseInt(V,10)&&k(n.values().next().value)),F.shapeFlag|=256,u=F,S2(H.type)?H:F}}},U8=j8;function _f(e,t){return ze(e)?e.some(r=>_f(r,t)):Vt(e)?e.split(",").includes(t):Z4(e)?e.test(t):!1}function P2(e,t){B2(e,"a",t)}function C2(e,t){B2(e,"da",t)}function B2(e,t,r=er){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(mh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Ls(a.parent.vnode)&&H8(i,t,r,a),a=a.parent}}function H8(e,t,r,i){const a=mh(t,e,i,!0);wh(()=>{iv(i[t],a)},r)}function Cc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Bc(e){return e.shapeFlag&128?e.ssContent:e}function mh(e,t,r=er,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...u)=>{if(r.isUnmounted)return;ma(),Eo(r);const c=Zr(t,r,e,u);return yo(),ya(),c});return i?a.unshift(n):a.push(n),n}else{const a=xn(vv[e].replace(/ hook$/,""));Ue(`${a} 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 Vn=e=>(t,r=er)=>(!fs||e==="sp")&&mh(e,(...i)=>t(...i),r),L2=Vn("bm"),Ns=Vn("m"),Rv=Vn("bu"),yh=Vn("u"),bh=Vn("bum"),wh=Vn("um"),N2=Vn("sp"),k2=Vn("rtg"),$2=Vn("rtc");function D2(e,t=er){mh("ec",e,t)}const Cl="components",q8="directives";function W8(e,t){return Av(Cl,e,!0,t)||e}const F2=Symbol.for("v-ndc");function K8(e){return Vt(e)?Av(Cl,e,!1)||e:e||F2}function V8(e){return Av(q8,e)}function Av(e,t,r=!0,i=!1){const a=tr||er;if(a){const n=a.type;if(e===Cl){const c=Xf(n,!1);if(c&&(c===t||c===Kr(t)||c===_o(Kr(t))))return n}const u=Mm(a[e]||n[e],t)||Mm(a.appContext[e],t);if(!u&&i)return n;if(r&&!u){const c=e===Cl?` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return u}else Ue(`resolve${_o(e.slice(0,-1))} can only be used in render() or setup().`)}function Mm(e,t){return e&&(e[t]||e[Kr(t)]||e[_o(Kr(t))])}function Ii(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||Vt(e)){a=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,n&&n[c]));else{const u=Object.keys(e);a=new Array(u.length);for(let c=0,d=u.length;c{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function j0(e,t,r={},i,a){if(tr.isCE||tr.parent&&ra(tr.parent)&&tr.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(Ue("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."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const u=n&&j2(n(r)),c=Pv(Lt,{key:r.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function j2(e){return e.some(t=>Nn(t)?!(t.type===rr||t.type===Lt&&!j2(t.children)):!0)?e:null}function G8(e,t){const r={};if(!Rt(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:xn(i)]=e[i];return r}const U0=e=>e?s_(e)?Mh(e)||e.proxy:U0(e.parent):null,ia=Pt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Wa(e.props),$attrs:e=>Wa(e.attrs),$slots:e=>Wa(e.slots),$refs:e=>Wa(e.refs),$parent:e=>U0(e.parent),$root:e=>U0(e.root),$emit:e=>e.emit,$options:e=>Ov(e),$forceUpdate:e=>e.f||(e.f=()=>lu(e.update)),$nextTick:e=>e.n||(e.n=uo.bind(e.proxy)),$watch:e=>$8.bind(e)}),Tv=e=>e==="_"||e==="$",Lc=(e,t)=>e!==$t&&!e.__isScriptSetup&&wt(e,t),Pf={get({_:e},t){const{ctx:r,setupState:i,data:a,props:n,accessCache:u,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const C=u[t];if(C!==void 0)switch(C){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(Lc(i,t))return u[t]=1,i[t];if(a!==$t&&wt(a,t))return u[t]=2,a[t];if((m=e.propsOptions[0])&&wt(m,t))return u[t]=3,n[t];if(r!==$t&&wt(r,t))return u[t]=4,r[t];H0&&(u[t]=0)}}const M=ia[t];let S,R;if(M)return t==="$attrs"?(Tr(e,"get",t),Pl()):t==="$slots"&&Tr(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==$t&&wt(r,t))return u[t]=4,r[t];if(R=d.config.globalProperties,wt(R,t))return R[t];tr&&(!Vt(t)||t.indexOf("__v")!==0)&&(a!==$t&&Tv(t[0])&&wt(a,t)?Ue(`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===tr&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return Lc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&wt(a,t)?(Ue(`Cannot mutate - - - - - - + + + + + + + From 02f314e5eade0cd2a0d359a6ddee39c44a4ea2ae Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Tue, 5 Sep 2023 11:32:51 +0200 Subject: [PATCH 108/121] bump version 2.1.1-Beta.2 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index a0ec6f120e..b1fbde3ac3 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.1-Alpha.2 +2.1.1-Beta.2 From 10350e6499679c6900ad1b8c70e57c65f3f4ce69 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 8 Sep 2023 12:16:49 +0200 Subject: [PATCH 109/121] add missed display topic --- packages/helpermodules/parse_send_debug.py | 2 +- packages/helpermodules/update_config.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/helpermodules/parse_send_debug.py b/packages/helpermodules/parse_send_debug.py index 5b925528e1..77ac232a7a 100644 --- a/packages/helpermodules/parse_send_debug.py +++ b/packages/helpermodules/parse_send_debug.py @@ -58,7 +58,7 @@ def parse_send_debug_data(): for cp in data.data.cp_data.values(): try: parsed_data += (f"LP{cp.num}: Typ: {cp.chargepoint_module.config.type}; IP: " - f"{cp.chargepoint_module.config.configuration.ip_address};, Stecker-Status: " + f"{cp.chargepoint_module.config.configuration.ip_address}; Stecker-Status: " f"{cp.data.get.plug_state}, Leistung: " f"{cp.data.get.power/1000}kW, {cp.data.get.currents}A, {cp.data.get.voltages}V, Lademodus: " f"{cp.data.set.charging_ev_data.data.control_parameter.chargemode}, Submode: " diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index a6f17ac900..9964461a72 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -188,6 +188,7 @@ class UpdateConfig: "^openWB/optional/int_display/standby$", "^openWB/optional/int_display/rotation$", "^openWB/optional/int_display/theme$", + "^openWB/optional/int_display/only_local_charge_points", "^openWB/optional/led/active$", "^openWB/optional/rfid/active$", From 5cc34277f82739388a3f9cb412eeb8386e7b537f Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Fri, 8 Sep 2023 12:17:03 +0200 Subject: [PATCH 110/121] build ui --- ...eLog-0999e18c.js => ChargeLog-44e297bd.js} | 2 +- ...js => ChargePointInstallation-e9afcc08.js} | 2 +- .../{Chart-73a93152.js => Chart-19a8a4c0.js} | 2 +- ...ig-4d98a70d.js => CloudConfig-e2087842.js} | 2 +- ...f38afa86.js => DataManagement-44334b0c.js} | 2 +- ...ig-8fb43a78.js => DebugConfig-4d789b8a.js} | 2 +- ...d36.js => GeneralChargeConfig-d9fc3d91.js} | 2 +- ...-f5ba108a.js => GeneralConfig-6f942583.js} | 2 +- ...c9.js => HardwareInstallation-33a40424.js} | 2 +- ...a1a.js => InstantChargeConfig-81ae89da.js} | 2 +- ...-f8ef4166.js => LegalSettings-67cbbf35.js} | 2 +- ...c3.js => LoadManagementConfig-0263daa7.js} | 2 +- ...74c1b1.js => MqttBridgeConfig-f4b2ee1b.js} | 2 +- ...e1d7.js => OptionalComponents-560c0e0a.js} | 46 +++++++++++++++++-- ...7b09b63a.js => PVChargeConfig-42aae27d.js} | 2 +- ...d.js => ScheduledChargeConfig-1687d025.js} | 2 +- ...{Status-954adcf7.js => Status-60e959e3.js} | 2 +- ...upport-bee6b474.js => Support-0be69787.js} | 2 +- ...{System-c57d9a74.js => System-62b8e5ff.js} | 2 +- ...e-1048cc3b.js => TestingStore-1f8762e3.js} | 2 +- ...55662f.js => TimeChargeConfig-551a0160.js} | 2 +- ...-2663db55.js => VehicleConfig-939fd0ba.js} | 2 +- .../{index-f08a7306.js => index-2a1b0c80.js} | 2 +- ...ehicle-e7320818.js => vehicle-1c4a57cd.js} | 2 +- web/settings/index.html | 2 +- 25 files changed, 65 insertions(+), 29 deletions(-) rename web/settings/assets/{ChargeLog-0999e18c.js => ChargeLog-44e297bd.js} (99%) rename web/settings/assets/{ChargePointInstallation-0b5b847e.js => ChargePointInstallation-e9afcc08.js} (99%) rename web/settings/assets/{Chart-73a93152.js => Chart-19a8a4c0.js} (99%) rename web/settings/assets/{CloudConfig-4d98a70d.js => CloudConfig-e2087842.js} (99%) rename web/settings/assets/{DataManagement-f38afa86.js => DataManagement-44334b0c.js} (99%) rename web/settings/assets/{DebugConfig-8fb43a78.js => DebugConfig-4d789b8a.js} (98%) rename web/settings/assets/{GeneralChargeConfig-48509d36.js => GeneralChargeConfig-d9fc3d91.js} (97%) rename web/settings/assets/{GeneralConfig-f5ba108a.js => GeneralConfig-6f942583.js} (99%) rename web/settings/assets/{HardwareInstallation-02a629c9.js => HardwareInstallation-33a40424.js} (99%) rename web/settings/assets/{InstantChargeConfig-30b13a1a.js => InstantChargeConfig-81ae89da.js} (96%) rename web/settings/assets/{LegalSettings-f8ef4166.js => LegalSettings-67cbbf35.js} (97%) rename web/settings/assets/{LoadManagementConfig-ca6e28c3.js => LoadManagementConfig-0263daa7.js} (99%) rename web/settings/assets/{MqttBridgeConfig-5474c1b1.js => MqttBridgeConfig-f4b2ee1b.js} (99%) rename web/settings/assets/{OptionalComponents-4617e1d7.js => OptionalComponents-560c0e0a.js} (73%) rename web/settings/assets/{PVChargeConfig-7b09b63a.js => PVChargeConfig-42aae27d.js} (99%) rename web/settings/assets/{ScheduledChargeConfig-5a41484d.js => ScheduledChargeConfig-1687d025.js} (97%) rename web/settings/assets/{Status-954adcf7.js => Status-60e959e3.js} (99%) rename web/settings/assets/{Support-bee6b474.js => Support-0be69787.js} (98%) rename web/settings/assets/{System-c57d9a74.js => System-62b8e5ff.js} (98%) rename web/settings/assets/{TestingStore-1048cc3b.js => TestingStore-1f8762e3.js} (99%) rename web/settings/assets/{TimeChargeConfig-3a55662f.js => TimeChargeConfig-551a0160.js} (96%) rename web/settings/assets/{VehicleConfig-2663db55.js => VehicleConfig-939fd0ba.js} (99%) rename web/settings/assets/{index-f08a7306.js => index-2a1b0c80.js} (96%) rename web/settings/assets/{vehicle-e7320818.js => vehicle-1c4a57cd.js} (97%) diff --git a/web/settings/assets/ChargeLog-0999e18c.js b/web/settings/assets/ChargeLog-44e297bd.js similarity index 99% rename from web/settings/assets/ChargeLog-0999e18c.js rename to web/settings/assets/ChargeLog-44e297bd.js index 0adf03b8c9..d8cffc5cfa 100644 --- a/web/settings/assets/ChargeLog-0999e18c.js +++ b/web/settings/assets/ChargeLog-44e297bd.js @@ -1,2 +1,2 @@ -import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-838df0c9.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-20bb207d.js";import{C as N}from"./index-f08a7306.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.join(";")).join(` +import{l as C,N as q,O as R,F as k}from"./vendor-fortawesome-838df0c9.js";import{_ as x,$ as E,p as l,k as h,l as m,q as g,A as r,L as s,y as V,z as L,u as d,x as y,Q as F,R as B}from"./vendor-20bb207d.js";import{C as N}from"./index-2a1b0c80.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";C.add(q,R);const S={name:"OpenwbChargeLog",components:{Vue3TableLite:E,FontAwesomeIcon:k},mixins:[N],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/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],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:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0,display:e=>this.alignEnd(e.time_time_charged)},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_imported_since_mode_switch/1e3,2)+" kWh / "+this.formatNumber(e.data_range_charged,0)+" km")},{label:"Kosten",field:"data_costs",sortable:!0,display:e=>this.alignEnd(this.formatNumber(e.data_costs,2)+" €")},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0,display:e=>'
'+e.vehicle_chargemode+"
"},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Priorität",field:"vehicle_prio",display:e=>this.translateBool(e.vehicle_prio)}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1,display:e=>this.alignEnd(e.time_charged)},{label:"Energie",field:"imported_since_mode_switch",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.imported_since_mode_switch/1e3,2)+" kWh")},{label:"Reichweite",field:"range_charged",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.range_charged,0)+" km")},{label:"Kosten",field:"costs",sortable:!1,display:e=>this.alignEnd(this.formatNumber(e.costs,2)+" €")}]}}},computed:{downloadUrl(){const e=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${e}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(e){let t=e.split("-");this.chargeLogRequestData.year=t[0],this.chargeLogRequestData.month=t[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogDataset:{get(){try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(e=>{var t=Date.parse(e.time.begin),n=Date.parse(e.time.end);return{chargepoint_id:e.chargepoint.id,chargepoint_name:e.chargepoint.name,vehicle_id:e.vehicle.id,vehicle_name:e.vehicle.name,vehicle_chargemode:this.translateChargeMode(e.vehicle.chargemode),vehicle_rfid:e.vehicle.rfid,vehicle_prio:e.vehicle.prio,timestamp_begin:t/1e3,time_begin:this.dateTimeFormat.format(new Date(t)),timestamp_end:n/1e3,time_end:this.dateTimeFormat.format(new Date(n)),time_time_charged:e.time.time_charged,data_power:e.data.power,data_range_charged:e.data.range_charged,data_costs:e.data.costs,data_imported_since_plugged:e.data.imported_since_plugged,data_imported_since_mode_switch:e.data.imported_since_mode_switch}})}catch{return[]}}},chargeLogCsv:{get(){return[["Ladepunkt-ID","Ladepunkt","Fahrzeug-ID","Fahrzeug","Lademodus","Priorität","Beginn","Ende","Zeitstempel Beginn","Zeitstempel Ende","Dauer","Leistung","Energie","Reichweite","Kosten"],...this.chargeLogDataset.map(t=>[t.chargepoint_id,'"'+t.chargepoint_name+'"',t.vehicle_id,'"'+t.vehicle_name+'"','"'+t.vehicle_chargemode+'"','"'+this.translateBool(t.vehicle_prio,!1)+'"','"'+t.time_begin+'"','"'+t.time_end+'"','"'+t.timestamp_begin+'"','"'+t.timestamp_end+'"','"'+t.time_time_charged+'"',this.formatNumber(t.data_power/1e3,3),this.formatNumber(t.data_imported_since_mode_switch/1e3,2),this.formatNumber(t.data_range_charged,0),this.formatNumber(t.data_costs,2)])].map(t=>t.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 e=this.chargeModes.map(t=>({value:t,text:this.translateChargeMode(t)}));return e.unshift({value:void 0,text:"Alle"}),e},chargePointList(){let e=this.getWildcardTopics("openWB/chargepoint/+/config");var t=[{value:void 0,text:"Alle"}];for(const[,n]of Object.entries(e))t.push({value:n.id,text:n.name});return t},vehicleList(){let e=this.getWildcardTopics("openWB/vehicle/+/name");var t=[{value:void 0,text:"Alle"}];for(const[n,c]of Object.entries(e)){let i=parseInt(n.match(/\/([0-9]+)\/name$/)[1]);t.push({value:i,text:c})}return t}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(e=>e!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(e=>e!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(e=>e!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(e){var t=new Blob([e],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(t),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"))},alignEnd(e){return'
'+e+"
"},alignCenter(e){return'
'+e+"
"},translateBool(e,t=!0){let n="Nein",c="bg-danger";return e&&(n="Ja",c="bg-success"),t?'
'+n+"
":n},getChargeModeClass(e){switch(e){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:",e),"bg-light"}},translateHeading(e){switch(e){case"time_charged":return"Dauer";case"range_charged":return"Reichweite";case"imported_since_mode_switch":return"Energie im Lademodus";case"imported_since_plugged":return"Energie seit Anstecken";case"power":return"Leistung";case"costs":return"Kosten";default:return console.warn("unknown heading:",e),e}}},mounted(){const e=new Date;this.currentMonth=this.chargeLogDate=e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},T=e=>(F("data-v-8607e7e7"),e=e(),B(),e),U={class:"chargeLog"},I={name:"chargeLogForm"},W=["href"],M={key:1},A={key:0},O={class:"row justify-content-center"},P={class:"hide",ref:"downloadChargeLogLink"},j=T(()=>g("div",{class:"row"},[g("div",{class:"col"},[g("h2",null,"Summe")])],-1));function z(e,t,n,c,i,a){const v=l("openwb-base-text-input"),p=l("font-awesome-icon"),w=l("openwb-base-button-group-input"),u=l("openwb-base-select-input"),_=l("openwb-base-card"),b=l("openwb-base-alert"),f=l("vue3-table-lite"),D=l("openwb-base-click-button");return h(),m("div",U,[g("form",I,[r(_,{title:"Filter"},{default:s(()=>[r(v,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:i.currentMonth,modelValue:a.chargeLogDate,"onUpdate:modelValue":[t[0]||(t[0]=o=>a.chargeLogDate=o),t[1]||(t[1]=o=>a.requestChargeLog())]},null,8,["max","modelValue"]),r(_,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[r(p,{"fixed-width":"",icon:["fas","filter"]}),d(" Erweiterte Optionen ")]),default:s(()=>[r(w,{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"}],modelValue:i.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[t[2]||(t[2]=o=>i.chargeLogRequestData.filter.vehicle.prio=o),t[3]||(t[3]=o=>a.requestChargeLog())]},null,8,["modelValue"]),r(u,{title:"Lademodus",multiple:"",options:a.chargeModeList,modelValue:i.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[t[4]||(t[4]=o=>i.chargeLogRequestData.filter.vehicle.chargemode=o),t[5]||(t[5]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Ladepunkt",multiple:"",options:a.chargePointList,modelValue:i.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[t[6]||(t[6]=o=>i.chargeLogRequestData.filter.chargepoint.id=o),t[7]||(t[7]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),r(u,{title:"Fahrzeug",multiple:"",options:a.vehicleList,modelValue:i.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[t[8]||(t[8]=o=>i.chargeLogRequestData.filter.vehicle.id=o),t[9]||(t[9]=o=>a.requestChargeLog())]},{help:s(()=>[d(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"])]),_:1})]),_:1}),r(b,{subtype:"info"},{default:s(()=>[d(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),g("a",{href:a.downloadUrl},y(a.downloadUrl),9,W)]),_:1}),a.chargeLogRead?(h(),m("div",M,[r(f,{class:"charge-log-table","is-static-mode":!0,columns:i.table.columns,rows:a.chargeLogDataset,total:a.totalRecordCount,sortable:i.table.sortable,messages:i.table.messages,"page-options":i.table.pageOptions,limit:25},null,8,["columns","rows","total","sortable","messages","page-options"]),a.totalRecordCount>0?(h(),m("div",A,[g("div",O,[r(D,{class:"col-4 btn-success",onButtonClicked:t[10]||(t[10]=o=>a.downloadChargeLog())},{default:s(()=>[d(" Als CSV exportieren "),r(p,{"fixed-width":"",icon:["fas","download"]})]),_:1}),g("a",P,null,512)]),j,L(" ToDo: build a table component "),r(f,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:i.totals.columns,rows:a.chargeLogTotals,total:1},null,8,["columns","rows"])])):L("v-if",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>[d(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const X=x(S,[["render",z],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{X as default}; diff --git a/web/settings/assets/ChargePointInstallation-0b5b847e.js b/web/settings/assets/ChargePointInstallation-e9afcc08.js similarity index 99% rename from web/settings/assets/ChargePointInstallation-0b5b847e.js rename to web/settings/assets/ChargePointInstallation-e9afcc08.js index de99e91da3..4f89bb6efa 100644 --- a/web/settings/assets/ChargePointInstallation-0b5b847e.js +++ b/web/settings/assets/ChargePointInstallation-e9afcc08.js @@ -1 +1 @@ -import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-838df0c9.js";import{_ as L,C as oe}from"./index-f08a7306.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-9ab109c4.js"),["assets/chargePoint-9ab109c4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-75b0bdf9.js"),["assets/chargePoint-75b0bdf9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-9f9283b5.js"),["assets/chargePoint-9f9283b5.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-792da849.js"),["assets/chargePoint-792da849.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-83d3ee27.js"),["assets/chargePoint-83d3ee27.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-47a32a91.js"),["assets/chargePoint-47a32a91.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-dfab65eb.js"),["assets/commands-dfab65eb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; +import{l as J,d as G,S as Q,A as X,T as Y,U as K,J as ee,V as te,F as ne,W as ae}from"./vendor-fortawesome-838df0c9.js";import{_ as L,C as oe}from"./index-2a1b0c80.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,p as h,k as l,l as g,A as n,L as o,u as i,x as k,q as u,a0 as D,y as w,a1 as F,G as T,z as c,I,n as M,a2 as O,Q as ie,R as le}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},se={class:"device-fallback"};function de(e,a,m,y,p,d){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return l(),g("div",se,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(m.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":m.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[u("pre",null,k(JSON.stringify(m.configuration,void 0,2)),1)]),_:1})])}const ue=U(re,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),me={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},pe={class:"charge-point-commands-fallback"};function ce(e,a,m,y,p,d){const C=h("openwb-base-alert");return l(),g("div",pe,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+k(m.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const ge=U(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),he={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-9ab109c4.js"),["assets/chargePoint-9ab109c4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-75b0bdf9.js"),["assets/chargePoint-75b0bdf9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-9f9283b5.js"),["assets/chargePoint-9f9283b5.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-792da849.js"),["assets/chargePoint-792da849.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-83d3ee27.js"),["assets/chargePoint-83d3ee27.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-47a32a91.js"),["assets/chargePoint-47a32a91.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ue})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-dfab65eb.js"),["assets/commands-dfab65eb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},fe=u("hr",null,null,-1);function be(e,a,m,y,p,d){const C=h("openwb-base-heading");return l(),g(T,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointSettingsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),fe,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+k(m.moduleName),1)]),_:1}),(l(),w(F(d.myChargePointCommandsComponent),{configuration:m.configuration,chargePointId:m.chargePointId,chargePointType:m.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const _e=U(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);J.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallation",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:_e},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[m,y]of Object.entries(e))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=y);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:y})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},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(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.info("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.info("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},_=e=>(ie("data-v-75fe5743"),e=e(),le(),e),we={class:"chargePointInstallation"},ke={name:"chargePointInstallationForm"},Ce={key:0},Pe=_(()=>u("hr",null,null,-1)),ye={key:1},Ve=_(()=>u("hr",null,null,-1)),Le=_(()=>u("br",null,null,-1)),We=_(()=>u("br",null,null,-1)),Te=_(()=>u("br",null,null,-1)),Be=_(()=>u("br",null,null,-1)),Se={key:1},Ae={class:"col-1"},xe=_(()=>u("br",null,null,-1)),Ie=_(()=>u("ul",null,[u("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 "),u("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),u("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),u("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),u("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),u("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ue=_(()=>u("hr",{class:"border-secondary"},null,-1)),ze={key:0},qe={key:1},Ee=_(()=>u("hr",null,null,-1)),De={key:0},Fe=_(()=>u("br",null,null,-1)),Me=["innerHTML"],Oe=_(()=>u("hr",null,null,-1)),Ne=_(()=>u("br",null,null,-1)),je=_(()=>u("br",null,null,-1)),Re=_(()=>u("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze=_(()=>u("hr",null,null,-1)),$e={key:0},He={key:1},Je={key:2},Ge={key:2};function Qe(e,a,m,y,p,d){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-alert"),S=h("openwb-base-avatar"),V=h("openwb-base-text-input"),z=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),P=h("openwb-base-button-group-input"),A=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),Z=h("openwb-base-array-input"),q=h("openwb-base-range-input"),$=h("openwb-base-submit-buttons");return l(),g(T,null,[c(" modal dialogs "),n(C,{show:p.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>d.removeChargePoint(p.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+k(d.getChargePointName(p.modalChargePointIndex))+'" (ID: '+k(p.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>d.removeChargePointTemplate(p.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+k(d.getChargePointTemplateName(p.modalChargePointTemplateIndex))+'" (ID: '+k(p.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:p.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>d.removeChargePointTemplateAutolockPlan(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+k(d.getChargePointTemplateAutolockPlanName(p.modalChargePointTemplateIndex,p.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),c(" main content "),u("div",we,[u("form",ke,[c(" charge point card "),n(A,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!0},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[Object.keys(d.installedChargePoints).length>1?(l(),w(B,{key:0,subtype:"danger"},{default:o(()=>[i(' Wenn mehrere Ladepunkte mit unterschiedlichen Lademodi genutzt werden, so ist für jeden Ladepunkt ein eigenes "Fahrzeug" (mit eigenem "Ladeprofil") anzulegen und dem jeweiligen LP auf der Hauptseite zuzuordnen. Diese Abhängigkeit wird mittelfristig noch bereinigt. ')]),_:1})):c("v-if",!0),(l(!0),g(T,null,I(d.installedChargePoints,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[s].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("span",Ce,[n(z,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[s].template,"onUpdate:modelValue":t=>e.updateState(s,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("v-if",!0),Pe,n(N,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[s].type,moduleName:e.$store.state.mqtt[s].name,configuration:r.configuration,"onUpdate:configuration":t=>d.updateConfiguration(s,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",ye,[Ve,n(W,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(P,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(s,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' 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"]),n(W,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(P,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:0,text:"unbekannt",class:"btn-outline-danger"},{buttonValue:1,text:"EVU L1",class:"btn-outline-success"},{buttonValue:2,text:"EVU L2",class:"btn-outline-success"},{buttonValue:3,text:"EVU L3",class:"btn-outline-success"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(s,t,"phase_1")},{help:o(()=>[i(" 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."),Le,i(' 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.'),We,i(" 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)."),Te,i(" 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."),Be,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("v-if",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(l(),g("hr",Se)):c("v-if",!0),n(z,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":p.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>p.chargePointToAdd=r)},{append:o(()=>[u("span",Ae,[n(j,{class:M(p.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:p.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,Ie]),_:1},8,["options","model-value"])]),_:1}),Ue,c(" charge point template card "),n(A,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),w(S,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",ze,[n(B,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",qe,[(l(!0),g(T,null,I(d.chargePointTemplates,(r,s)=>(l(),w(A,{key:s,title:r.name+" (ID: "+d.getChargePointTemplateIndex(s)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(s,t,"name"),disabled:s.endsWith("/0")},O({_:2},[s.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Ee,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(l(),g("div",De,[n(W,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(P,{title:"Freigabe mit RFID",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.rfid_enabling,"onUpdate:modelValue":t=>e.updateState(s,t,"rfid_enabling")},null,8,["model-value","onUpdate:modelValue"]),n(Z,{title:"Zugeordnete Tags",noElementsMessage:"Keine Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(s,t,"valid_tags")},{help:o(()=>[i(" An allen Ladepunkten, denen dieses Ladepunkt-Profil zugeordnet ist, können die hier eingetragenen Tags verwendet werden."),Fe,u("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Me)]),_:2},1032,["model-value","onUpdate:modelValue"]),Oe])):c("v-if",!0),n(W,null,{default:o(()=>[i("Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(B,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend den in der zugeordneten Wallbox genutzten Phasen eingestellt."),Ne,i(" Generell gilt, dass diese Werte entsprechend der Ausführung der Wallbox und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. 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."),je,i(" Komplexere Installationen mit mehreren Wallboxen werden im "),Re,i(" beschrieben. ")]),_:1}),n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(s,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),Ze,n(W,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(P,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre 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. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(s,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre 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"]),n(W,null,{actions:o(()=>[n(S,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(s,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024),(l(!0),g(T,null,I(d.getChargePointTemplateAutolockPlans(s),(t,v)=>(l(),w(A,{key:v,title:t.name,collapsible:!0,collapsed:!0},{actions:o(f=>[f.collapsed==!0?(l(),g("span",{key:0,class:M(["subheader pill",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),g("span",$e,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):c("v-if",!0),t.frequency.selected=="daily"?(l(),g("span",He,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("span",Je,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("v-if",!0)],2)):c("v-if",!0),f.collapsed==!1?(l(),w(S,{key:1,class:"bg-danger clickable",onClick:x=>d.removeChargePointTemplateAutolockPlanModal(s,v,x)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("v-if",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":f=>e.updateState(v,f,"name")},null,8,["model-value","onUpdate:modelValue"]),n(P,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":f=>e.updateState(v,f,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":f=>e.updateState(v,f,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":f=>e.updateState(v,f,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(P,{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":t.frequency.selected,"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),w(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="once"?(l(),w(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":f=>e.updateState(v,f,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("v-if",!0),t.frequency.selected=="weekly"?(l(),g("div",Ge,[(l(!0),g(T,null,I(e.weekdays,(f,x)=>(l(),w(P,{key:x,title:f,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[x],"onUpdate:modelValue":H=>e.updateState(v,H,"frequency.weekly."+x)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[s.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?c("v-if",!0):(l(),w(S,{key:0,class:"bg-danger clickable",onClick:v=>d.removeChargePointTemplateModal(s,v)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const it=U(ve,[["render",Qe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{it as default}; diff --git a/web/settings/assets/Chart-73a93152.js b/web/settings/assets/Chart-19a8a4c0.js similarity index 99% rename from web/settings/assets/Chart-73a93152.js rename to web/settings/assets/Chart-19a8a4c0.js index aba5c0b49b..163e84026d 100644 --- a/web/settings/assets/Chart-73a93152.js +++ b/web/settings/assets/Chart-19a8a4c0.js @@ -1 +1 @@ -import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-f08a7306.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-93103a11.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; +import{l as T,J as L,K as q,L as H,M as j,P as O,Q as M,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-2a1b0c80.js";import{C as V,p as B,a as F,L as P,b as N,P as $,c as J,T as X,i as Z,d as K,e as G,g as Q}from"./vendor-chartjs-93103a11.js";import{_ as U,p,k as n,l as o,q as v,A as c,L as d,y as g,u as y,G as x,I as k,x as C,z as R}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-luxon-1af9332f.js";T.add(L,q,H,j,O,M);V.register(B,F,P,N,$,J,X,Z,K);const Y={name:"OpenwbChart",components:{ChartjsLine:G,FontAwesomeIcon:z},mixins:[E],emits:["sendCommand"],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:""}},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}},"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}}},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 a=e.split("-");this.chartRequestDate.year=a[0],a.length>1?this.chartRequestDate.month=a[1]:this.chartRequestDate.month="",a.length>2?this.chartRequestDate.day=a[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"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals},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 a=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return a}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const a=this.chartDataObject[this.chartDataObject.length-1];return a&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(a,r)&&Object.entries(a[r]).forEach(([s,i])=>{Object.keys(i).forEach(t=>{this.initDataset(r,s,t)})})}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const a=this.$refs.myChart.chart;if(!a)return;const r=Q(a,e);if(!r.length)return;const{datasetIndex:s,index:i}=r[0],t=this.chartData.datasets[s].data[i].date;var l="",b="";switch(this.chartRange){case"month":l=t.substring(0,4)+"-"+t.substring(4,6)+"-"+t.substring(6),b="day";break;case"year":l=t.substring(0,4)+"-"+t.substring(4,6),b="month";break}this.blockChartInit=!0,this.chartDate=l,this.chartRange=b},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}},getDatasetHidden(e,a){return console.debug("getDatasetHidden",e,a),!1},getTotalsLabel(e,a=void 0,r=void 0){var s="*test*";if(!a&&!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(a&&!r){if(a=="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[a]}if(a&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";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";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+a+"+"+r+"*"}return s},getDatasetLabel(e,a,r,s){var i=["*"+s],t=[];if(a=="all")switch(e!=="hc"&&t.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,a)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[a]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":t.push("SoC");break;case"energy_imported":t.push("Ladung");break;case"energy_exported":t.push("Entladung");break}break;case"counter":switch(r){case"energy_imported":t.push("Bezug/Verbrauch");break;case"energy_exported":t.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":t.push("Verbrauch");break;case"energy_exported":t.push("Erzeugung");break}break}return`${i.join(" ")}${t.length?" ("+t.join(", ")+")":""}`},getDatasetIndex(e){let a=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(a!=-1)return a},addDataset(e,a,r,s){var i=e+"-"+r;if(this.datasetTemplates[i]){var t=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return t.parsing.yAxisKey=s,t.jsonKey=s,t.data=this.chartDataObject,t.label=this.getDatasetLabel(e,a,r,s),t.labelSuffix!=null&&(t.label=t.label+t.labelSuffix),a=="all"&&(t.hidden=!1,delete t.stack),this.chartDatasets.datasets.push(t)-1}else console.warn("no matching template found for: "+s+" with template: "+i)},initDataset(e,a,r){var s=[];this.chartRange=="day"?s={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:s={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported"]};const i=e+"."+a+"."+r;if(s[e].includes(r)){var t=this.getDatasetIndex(i);const l=this.getDatasetHidden(e,a);t==null&&!l&&(t=this.addDataset(e,a,r,i)),t!=null&&l&&this.chartDatasets.datasets.splice(t,1)}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 a="";switch(this.chartRange){case"day":a="getDailyLog";break;case"month":a="getMonthlyLog";break;case"year":a="getYearlyLog";break}this.$emit("sendCommand",{command:a,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()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ee={class:"chart"},te={name:"chartForm"},ae={key:1},re={key:1},ie={class:"openwb-chart"};function se(e,a,r,s,i,t){const l=p("openwb-base-select-input"),b=p("openwb-base-text-input"),m=p("openwb-base-card"),D=p("openwb-base-alert"),w=p("chartjs-line"),S=p("font-awesome-icon"),A=p("openwb-base-heading");return n(),o("div",ee,[v("form",te,[c(m,{title:"Filter",collapsible:!0,collapsed:!1},{default:d(()=>[c(l,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":a[0]||(a[0]=u=>i.chartRange=u),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),c(b,{title:t.dateInput.title,subtype:t.dateInput.type,min:t.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:t.chartDate,"onUpdate:modelValue":[a[1]||(a[1]=u=>t.chartDate=u),a[2]||(a[2]=u=>t.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),t.chartDataRead?(n(),o("div",ae,[t.chartDataHasEntries?(n(),o("div",re,[c(m,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:d(()=>[v("div",ie,[c(w,{ref:"myChart",data:t.chartData,options:i.chartOptions,onClick:t.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),c(m,{title:"Summen",collapsible:!0,collapsed:!0},{default:d(()=>[(n(!0),o(x,null,k(t.chartTotals,(u,h)=>(n(),o("div",{key:h},[Object.keys(u).length>0?(n(),g(m,{key:0,collapsible:!0,collapsed:!0,subtype:t.getCardSubtype(h)},{header:d(()=>[c(S,{"fixed-width":"",icon:t.getCardIcon(h)},null,8,["icon"]),y(" "+C(t.getTotalsLabel(h)),1)]),default:d(()=>[(n(!0),o(x,null,k(u,(I,f)=>(n(),o("div",{key:f},[h!=="hc"?(n(),g(A,{key:0},{default:d(()=>[y(C(t.getTotalsLabel(h,f)),1)]),_:2},1024)):R("v-if",!0),(n(!0),o(x,null,k(I,(W,_)=>(n(),o("div",{key:_},[c(b,{title:t.getTotalsLabel(h,f,_),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128))]))),128))]),_:2},1032,["subtype"])):R("v-if",!0)]))),128))]),_:1})])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(n(),g(D,{key:0,subtype:"info"},{default:d(()=>[y(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const me=U(Y,[["render",se],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{me as default}; diff --git a/web/settings/assets/CloudConfig-4d98a70d.js b/web/settings/assets/CloudConfig-e2087842.js similarity index 99% rename from web/settings/assets/CloudConfig-4d98a70d.js rename to web/settings/assets/CloudConfig-e2087842.js index d96c89a506..37ae6a5a91 100644 --- a/web/settings/assets/CloudConfig-4d98a70d.js +++ b/web/settings/assets/CloudConfig-e2087842.js @@ -1,4 +1,4 @@ -import{C as W}from"./index-f08a7306.js";import{_ as S,p as m,k as l,l as c,z as a,A as o,L as t,q as g,y as p,a2 as y,G as D,u as s,n as k}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const Z={name:"OpenwbCloudConfig",mixins:[W],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let u=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,B]of Object.entries(u))B.remote.is_openwb_cloud||delete u[e];return u}},cloudBridgeKey:{get(){for(const[u,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return u}},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(u){return parseInt(u.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(u){u.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(u){this.showCloudRemoveModal=!1,u=="confirm"&&(console.info("request removal of cloud"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},q={class:"cloud-config"},z={key:1},M={key:1,name:"cloudConfigCreateForm"},N=g("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),x={key:0},K={key:1},R={class:"row justify-content-center"},A={key:2,name:"cloudConfigConnectForm"},P={key:0},T={key:1},U={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j=g("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),g("a",{href:"https://web.openwb.de/",target:"_blank",rel:"noopener noreferrer"},"openWB Cloud "),s(" anmelden. ")],-1),E=g("hr",null,null,-1),L={class:"row justify-content-center"};function I(u,e,B,O,d,r){const h=m("openwb-base-modal-dialog"),i=m("openwb-base-alert"),_=m("router-link"),b=m("openwb-base-text-input"),f=m("openwb-base-button-group-input"),C=m("openwb-base-click-button"),w=m("openwb-base-card"),v=m("openwb-base-heading"),V=m("openwb-base-submit-buttons");return l(),c(D,null,[a(" modal dialogs "),o(h,{show:d.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` r.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),a(" main content "),g("div",q,[o(i,{subtype:"danger"},{default:t(()=>[s(" Für diese Version gibt es noch keine Weboberfläche in der Cloud! Wenn der Zugang eingerichtet wurde, können z. B. Daten mit einem MQTT-Client von dem MQTT-Broker web.openwb.de abgerufen werden. Ebenfalls kann ein Support-Tunnel aufgebaut werden. Weitere Funktionen sind in der Entwicklung. ")]),_:1}),u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),p(i,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),c("div",z,[o(i,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),o(_,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),d.enableRemoveCloudButton?a("v-if",!0):(l(),p(i,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),r.cloudBridgeKey?a("v-if",!0):(l(),c("form",M,[o(w,{title:"Neuen Zugang erstellen"},y({default:t(()=>[o(i,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),u.$store.state.mqtt["openWB/general/extern"]===!0?(l(),c("div",x,[o(i,{subtype:"info"},{default:t(()=>[s(' Diese openWB befindet sich im Steuerungsmodus "secondary". Bitte richten Sie die openWB Cloud auf der regelnden openWB ein. ')]),_:1})])):(l(),c("div",K,[o(b,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:d.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>d.newCloudData.username=n),disabled:""},null,8,["modelValue"]),o(b,{title:"E-Mail",required:"",subtype:"email",modelValue:d.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>d.newCloudData.email=n),disabled:""},null,8,["modelValue"]),o(f,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:d.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>d.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"])]))]),_:2},[u.$store.state.mqtt["openWB/general/extern"]===!1&&u.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[g("div",R,[a(` [a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0e3e868.js"),["assets/backup_cloud-e0e3e868.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-6519f98a.js"),["assets/backup_cloud-6519f98a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; +import{l as z,a0 as V,a1 as H,a2 as j,a3 as A,a4 as P,F as R}from"./vendor-fortawesome-838df0c9.js";import{_ as D,C as N}from"./index-2a1b0c80.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as C,p as d,k as f,l as _,A as o,L as u,u as a,x as k,q as n,a0 as E,y as W,a1 as q,z as S,n as v,G as T,I as F,a2 as G}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const I={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},backupCloudType:String},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},Z={class:"backup-cloud-fallback"};function K(t,e,r,c,s,i){const p=d("openwb-base-alert"),m=d("openwb-base-textarea");return f(),_("div",Z,[o(p,{subtype:"warning"},{default:u(()=>[a(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(r.backupCloudType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(m,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":e[0]||(e[0]=h=>i.updateConfiguration(h,"configuration"))},{help:u(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:u(()=>[n("pre",null,k(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})])}const $=C(I,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),J={name:"OpenwbBackupCloudProxy",emits:["update:configuration"],props:{backupCloudType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloudType}`),E({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>D(()=>import("./backup_cloud-e0e3e868.js"),["assets/backup_cloud-e0e3e868.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./onedrive/backup_cloud.vue":()=>D(()=>import("./backup_cloud-6519f98a.js"),["assets/backup_cloud-6519f98a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.backupCloudType}/backup_cloud.vue`),errorComponent:$})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function Q(t,e,r,c,s,i){return f(),W(q(i.myComponent),{configuration:r.configuration,backupCloudType:r.backupCloudType,"onUpdate:configuration":e[0]||(e[0]=p=>i.updateConfiguration(p))},null,40,["configuration","backupCloudType"])}const X=C(J,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,H,j,A,P);const Y={name:"OpenwbSystem",mixins:[N],emits:["sendCommand"],components:{FontAwesomeIcon:R,OpenwbBackupCloudProxy:X},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,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"]},{key:"sh10",label:"Gerät 10",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,sh10: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 t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const r of Object.values(t))e.push({value:r.id,text:r.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[r,c]of Object.entries(t)){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:c})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[r,c]of Object.entries(t))if(c==1){let s=parseInt(r.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(r=>r.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,r){return new Promise(c=>{if(e!==void 0){let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(r,"success"),c(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var p="Hochladen der Datei fehlgeschlagen!
"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),p+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),p+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(p,"danger"),c(!1)})}else console.error("no file selected for upload"),c(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)}}},ee={class:"system"},te=n("h2",null,"Achtung!",-1),ne=n("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),oe={key:0},ie={name:"backupForm"},se=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue=n("hr",null,null,-1),re={name:"restoreForm"},de=n("br",null,null,-1),ce={class:"input-group"},pe={class:"input-group-prepend"},me={class:"input-group-text"},ge={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},he={class:"input-group-append"},be=["disabled"],_e={class:"row justify-content-center"},ke={class:"col-md-4 d-flex py-1 justify-content-center"},ye=n("hr",null,null,-1),ve={name:"cloudBackupForm"},we=n("br",null,null,-1),Ce=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Be={key:0},De={name:"dataMigrationForm"},Se=n("br",null,null,-1),Te=n("br",null,null,-1),Fe={class:"input-group"},We={class:"input-group-prepend"},Oe={class:"input-group-text"},xe={class:"custom-file"},Me={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},ze=["disabled"],Ve={class:"row justify-content-center"},He={class:"col-md-4 d-flex py-1 justify-content-center"},je={name:"resetForm"},Ae={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Re(t,e,r,c,s,i){const p=d("openwb-base-button-group-input"),m=d("openwb-base-alert"),h=d("openwb-base-heading"),g=d("font-awesome-icon"),y=d("openwb-base-click-button"),B=d("openwb-base-select-input"),O=d("openwb-base-button-input"),x=d("openwb-backup-cloud-proxy"),M=d("openwb-base-submit-buttons"),w=d("openwb-base-card");return f(),_("div",ee,[o(m,{subtype:"danger"},{default:u(()=>[te,ne,o(p,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=l=>this.warningAcknowledged=l)},null,8,["modelValue"])]),_:1}),s.warningAcknowledged?(f(),_("div",oe,[o(w,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",ie,[o(h,null,{default:u(()=>[a("Sicherung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),se,a(" heruntergeladen werden. ")]),_:1}),n("div",ae,[n("div",le,[o(y,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=l=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:u(()=>[a(" Sicherung erstellen "),o(g,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),ue,n("form",re,[o(h,null,{default:u(()=>[a("Wiederherstellung")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),de,a(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",ce,[n("div",pe,[n("div",me,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ge,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=l=>i.updateSelectedRestoreFile(l))},null,32),n("label",fe,k(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",he,[n("button",{class:v(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=l=>i.uploadRestoreFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,be)])]),n("div",_e,[n("div",ke,[o(y,{class:v(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=l=>i.restoreBackup())},{default:u(()=>[a(" Wiederherstellung starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])]),ye,n("form",ve,[o(h,null,{default:u(()=>[a(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(m,{subtype:"info"},{default:u(()=>[a(" Zwischen Mitternacht und 5:00 Uhr wird 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."),we,a(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Ce,a(" . ")]),_:1}),o(B,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,"onUpdate:modelValue":e[5]||(e[5]=l=>i.updateSelectedBackupCloud(l))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/system/backup_cloud/config"].type?(f(),_("div",Be,[o(O,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[6]||(e[6]=l=>i.sendSystemCommand("createCloudBackup",{}))}),o(x,{backupCloudType:t.$store.state.mqtt["openWB/system/backup_cloud/config"].type,configuration:t.$store.state.mqtt["openWB/system/backup_cloud/config"].configuration,"onUpdate:configuration":e[7]||(e[7]=l=>i.updateConfiguration("openWB/system/backup_cloud/config",l)),onSendCommand:e[8]||(e[8]=l=>i.sendSystemCommand(l.command,l.args))},null,8,["backupCloudType","configuration"])])):S("v-if",!0),o(M,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[9]||(e[9]=l=>t.$emit("save")),onReset:e[10]||(e[10]=l=>t.$emit("reset")),onDefaults:e[11]||(e[11]=l=>t.$emit("defaults"))})])]),_:1}),o(w,{title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:u(()=>[n("form",De,[o(m,{subtype:"info"},{default:u(()=>[a(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden."),Se,a(" Die Portierung kann einige Minuten dauern. Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist. ")]),_:1}),o(m,{subtype:"danger"},{default:u(()=>[a(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,a(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Fe,[n("div",We,[n("div",Oe,[o(g,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",xe,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[12]||(e[12]=l=>i.updateSelectedDataMigrationFile(l))},null,32),n("label",Me,k(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Le,[n("button",{class:v(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[13]||(e[13]=l=>i.uploadDataMigrationFile())},[a(" Hochladen "),o(g,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(h,null,{default:u(()=>[a("Zuordnung der Komponenten")]),_:1}),(f(!0),_(T,null,F(s.dataMigrationConfig,l=>(f(),_("div",{key:l.sectionName},[o(h,null,{default:u(()=>[a(k(l.sectionName),1)]),_:2},1024),(f(!0),_(T,null,F(l.sectionComponents,b=>(f(),W(B,{key:b.key,title:b.label,options:i.getMigrationOptions(b.validTypes),modelValue:s.dataMigrationMapping[b.key],"onUpdate:modelValue":L=>s.dataMigrationMapping[b.key]=L},G({_:2},[b.help?{name:"help",fn:u(()=>[a(k(b.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Ve,[n("div",He,[o(y,{class:v(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[14]||(e[14]=l=>i.dataMigration())},{default:u(()=>[a(" Datenübernahme starten "),o(g,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1}),n("form",je,[o(w,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:u(()=>[n("div",Ae,[n("div",Pe,[o(y,{class:"btn-danger clickable",onButtonClicked:e[15]||(e[15]=l=>i.sendSystemCommand("factoryReset",{}))},{default:u(()=>[o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),a(" Zurücksetzen "),o(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:u(()=>[o(m,{subtype:"danger"},{default:u(()=>[a(" 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})])])):S("v-if",!0)])}const $e=C(Y,[["render",Re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{$e as default}; diff --git a/web/settings/assets/DebugConfig-8fb43a78.js b/web/settings/assets/DebugConfig-4d789b8a.js similarity index 98% rename from web/settings/assets/DebugConfig-8fb43a78.js rename to web/settings/assets/DebugConfig-4d789b8a.js index 5f34186446..4a67df71c8 100644 --- a/web/settings/assets/DebugConfig-8fb43a78.js +++ b/web/settings/assets/DebugConfig-4d789b8a.js @@ -1,2 +1,2 @@ -import{l as h,Z as w,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as _}from"./index-f08a7306.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! +import{l as h,Z as w,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as _}from"./index-2a1b0c80.js";import{_ as k,p as a,k as v,l as C,q as l,A as t,L as o,u as c,x as p}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";h.add(w);const B={name:"OpenwbDebugging",mixins:[_],components:{FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],mainLog:"-- noch nicht geladen --",internalChargepointLog:"-- noch nicht geladen --",mqttLog:"-- noch nicht geladen --",socLog:"-- noch nicht geladen --",updateLog:"-- noch nicht geladen --"}},methods:{async getFilePromise(n){return this.axios.get(location.protocol+"//"+location.host+n).then(e=>e.data).catch(e=>e.response?`A 404 is expected if running node.js dev server! `+e.response.data:e.request?e.request:e.message)},loadMainLog(n){n.stopPropagation(),this.mainLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/main.log").then(e=>{this.mainLog=e})},loadInternalChargepointLog(n){n.stopPropagation(),this.internalChargepointLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/internal_chargepoint.log").then(e=>{this.internalChargepointLog=e})},loadMqttLog(n){n.stopPropagation(),this.mqttLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/mqtt.log").then(e=>{this.mqttLog=e})},loadSocLog(n){n.stopPropagation(),this.socLog="wird aktualisiert...",this.getFilePromise("/openWB/ramdisk/soc.log").then(e=>{this.socLog=e})},loadUpdateLog(n){n.stopPropagation(),this.updateLog="wird aktualisiert...",this.getFilePromise("/openWB/data/log/update.log").then(e=>{this.updateLog=e})}}},x={class:"debugging"},P={name:"debugConfigForm"};function D(n,e,F,W,r,d){const m=a("openwb-base-button-group-input"),b=a("openwb-base-alert"),i=a("openwb-base-card"),f=a("openwb-base-submit-buttons"),u=a("font-awesome-icon"),g=a("openwb-base-avatar");return v(),C("div",x,[l("form",P,[t(i,{title:"Protokollierung"},{default:o(()=>[t(m,{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]=s=>n.updateState("openWB/system/debug_level",s))},{help:o(()=>[c(' 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"]),t(b,{subtype:"warning"},{default:o(()=>[c(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwö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}),t(f,{formName:"debugConfigForm",onSave:e[1]||(e[1]=s=>n.$emit("save")),onReset:e[2]||(e[2]=s=>n.$emit("reset")),onDefaults:e[3]||(e[3]=s=>n.$emit("defaults"))})]),t(i,{title:"Main-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[4]||(e[4]=s=>d.loadMainLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mainLog),1)]),_:1}),t(i,{title:"Log des internen Ladepunktes",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[5]||(e[5]=s=>d.loadInternalChargepointLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.internalChargepointLog),1)]),_:1}),t(i,{title:"MQTT-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[6]||(e[6]=s=>d.loadMqttLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.mqttLog),1)]),_:1}),t(i,{title:"SoC-Log",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[7]||(e[7]=s=>d.loadSocLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.socLog),1)]),_:1}),t(i,{title:"Protokoll des letzten Updates",class:"mt-3",collapsible:!0,collapsed:!0},{actions:o(()=>[t(g,{class:"bg-success clickable",onClick:e[8]||(e[8]=s=>d.loadUpdateLog(s))},{default:o(()=>[t(u,{"fixed-width":"",icon:["fas","file-download"]})]),_:1})]),default:o(()=>[l("pre",null,p(r.updateLog),1)]),_:1})])}const A=k(B,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/GeneralChargeConfig-48509d36.js b/web/settings/assets/GeneralChargeConfig-d9fc3d91.js similarity index 97% rename from web/settings/assets/GeneralChargeConfig-48509d36.js rename to web/settings/assets/GeneralChargeConfig-d9fc3d91.js index 52f65b4129..b031c090d0 100644 --- a/web/settings/assets/GeneralChargeConfig-48509d36.js +++ b/web/settings/assets/GeneralChargeConfig-d9fc3d91.js @@ -1 +1 @@ -import{C as c}from"./index-f08a7306.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; +import{C as c}from"./index-2a1b0c80.js";import{_ as h,p as a,k as o,l,q as u,A as s,L as r,u as i,y as _,z as f}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const w={name:"OpenwbGeneralChargeConfig",mixins:[c],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit"]}}},v={class:"generalChargeConfig"},B={name:"generalChargeConfigForm"},C={key:0},z={key:1},k=u("br",null,null,-1);function $(n,e,W,V,S,N){const d=a("openwb-base-alert"),g=a("openwb-base-button-group-input"),m=a("openwb-base-range-input"),p=a("openwb-base-card"),b=a("openwb-base-submit-buttons");return o(),l("div",v,[u("form",B,[s(p,{title:"Allgemein"},{default:r(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(o(),l("div",C,[s(d,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(o(),l("div",z,[s(g,{title:"Begrenzung der Schieflast",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/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load",t))},{help:r(()=>[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!"),k,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"]),n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(o(),_(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/unbalanced_load_limit",t))},{help:r(()=>[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"])):f("v-if",!0)]))]),_:1}),s(b,{formName:"generalChargeConfigForm",onSave:e[2]||(e[2]=t=>n.$emit("save")),onReset:e[3]||(e[3]=t=>n.$emit("reset")),onDefaults:e[4]||(e[4]=t=>n.$emit("defaults"))})])])}const G=h(w,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{G as default}; diff --git a/web/settings/assets/GeneralConfig-f5ba108a.js b/web/settings/assets/GeneralConfig-6f942583.js similarity index 99% rename from web/settings/assets/GeneralConfig-f5ba108a.js rename to web/settings/assets/GeneralConfig-6f942583.js index a369c921ef..854263ca03 100644 --- a/web/settings/assets/GeneralConfig-f5ba108a.js +++ b/web/settings/assets/GeneralConfig-6f942583.js @@ -1,4 +1,4 @@ -import{C as f}from"./index-f08a7306.js";import{_ as h,p as r,k as u,l,q as i,A as o,L as s,z as b,u as a}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const v={name:"OpenwbGeneralConfig",mixins:[f],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/control_interval","openWB/general/grid_protection_configured","openWB/general/external_buttons_hw","openWB/general/notifications/selected","openWB/general/notifications/configuration","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/notifications/plug","openWB/general/notifications/smart_home","openWB/general/price_kwh","openWB/general/range_unit"]}}},B={class:"generalConfig"},w={name:"generalConfigForm"},_=i("br",null,null,-1),W=i("br",null,null,-1),k=i("br",null,null,-1),z=i("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage ",-1),S={key:0},$={key:1},V=i("br",null,null,-1),y=i("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),x=i("br",null,null,-1),P=i("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),q={key:0},L={key:1},N=i("br",null,null,-1);function E(e,t,A,D,T,I){const p=r("openwb-base-alert"),d=r("openwb-base-button-group-input"),g=r("openwb-base-card"),m=r("openwb-base-number-input"),c=r("openwb-base-submit-buttons");return u(),l("div",B,[i("form",w,[o(g,{title:"Steuerungsmodus"},{default:s(()=>[o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),_,W,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.'),k,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),z,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"])]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),V,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),x,P]),_:1},8,["model-value"]),b(` [o(p,{subtype:"info"},{default:s(()=>[a(' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. '),_,W,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.'),k,a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),z,a(". ")]),_:1}),o(d,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/general/extern",n))},null,8,["model-value"])]),_:1}),o(g,{title:"Hardware"},{default:s(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),l("div",S,[o(p,{subtype:"info"},{default:s(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),l("div",$,[o(d,{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":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/general/control_interval",n))},{help:s(()=>[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.'),V,y]),_:1},8,["model-value"]),o(d,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/general/grid_protection_configured",n))},{help:s(()=>[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.'),x,P]),_:1},8,["model-value"]),b(` [v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-d94203e2.js"),["assets/bat-d94203e2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-16bcb8fc.js"),["assets/counter-16bcb8fc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-eef610e6.js"),["assets/inverter-eef610e6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-17d0ebe7.js"),["assets/bat-17d0ebe7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-d1489ce8.js"),["assets/counter-d1489ce8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-21044b75.js"),["assets/external_inverter-21044b75.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-267fccce.js"),["assets/inverter-267fccce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-39b4c6ba.js"),["assets/bat-39b4c6ba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-08f8d2f2.js"),["assets/counter-08f8d2f2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-0d09b23e.js"),["assets/counter-0d09b23e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-96db7f1d.js"),["assets/inverter-96db7f1d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-d04d3f5b.js"),["assets/bat-d04d3f5b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-969297fa.js"),["assets/counter-969297fa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-5c208b04.js"),["assets/external_inverter-5c208b04.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-be6aac70.js"),["assets/inverter-be6aac70.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-2524acf0.js"),["assets/counter-2524acf0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-c90183ae.js"),["assets/inverter-c90183ae.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-3f0ca072.js"),["assets/bat-3f0ca072.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-57c9333b.js"),["assets/counter-57c9333b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-1c1592c9.js"),["assets/inverter-1c1592c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-514861df.js"),["assets/bat-514861df.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-ba7ae169.js"),["assets/counter_s0-ba7ae169.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ccecb663.js"),["assets/counter_sm-ccecb663.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-0fd0b224.js"),["assets/inverter-0fd0b224.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-874f748e.js"),["assets/bat-874f748e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-a3e434aa.js"),["assets/counter-a3e434aa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-08367390.js"),["assets/inverter-08367390.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-0e028baf.js"),["assets/bat-0e028baf.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-75ce0061.js"),["assets/counter-75ce0061.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-15408a2b.js"),["assets/inverter-15408a2b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-46c566c9.js"),["assets/bat-46c566c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-45ecd9ff.js"),["assets/counter-45ecd9ff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-86ab0f22.js"),["assets/inverter-86ab0f22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-5b22e35d.js"),["assets/bat-5b22e35d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-6247163c.js"),["assets/counter-6247163c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4c98a82a.js"),["assets/inverter-4c98a82a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-1ddce36f.js"),["assets/counter-1ddce36f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-268a0365.js"),["assets/bat-268a0365.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-e3807695.js"),["assets/counter-e3807695.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5b0c8748.js"),["assets/inverter-5b0c8748.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-b4f1d52c.js"),["assets/counter-b4f1d52c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f399f0d.js"),["assets/inverter-1f399f0d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-8c6dadd9.js"),["assets/inverter-8c6dadd9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-ec698ff1.js"),["assets/bat-ec698ff1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-9a41f79b.js"),["assets/counter-9a41f79b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f9807fb1.js"),["assets/inverter-f9807fb1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-ed28bc4b.js"),["assets/counter-ed28bc4b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-508f415f.js"),["assets/inverter-508f415f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-0eeeca9c.js"),["assets/bat-0eeeca9c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-cf4834fd.js"),["assets/counter-cf4834fd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-e5461fd3.js"),["assets/inverter-e5461fd3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-3af1a10a.js"),["assets/bat-3af1a10a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-1516cbf4.js"),["assets/counter-1516cbf4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-40f5b027.js"),["assets/inverter-40f5b027.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-bbb09227.js"),["assets/bat-bbb09227.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-27edc2dc.js"),["assets/bat-27edc2dc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-4fb4e495.js"),["assets/counter-4fb4e495.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-a4741525.js"),["assets/inverter-a4741525.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-aaf46348.js"),["assets/bat-aaf46348.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-0abbb386.js"),["assets/counter-0abbb386.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-d02eb41e.js"),["assets/inverter-d02eb41e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1b75ddba.js"),["assets/inverter-1b75ddba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-c9dc9c81.js"),["assets/counter-c9dc9c81.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f7d9af29.js"),["assets/inverter-f7d9af29.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-b804ace4.js"),["assets/counter-b804ace4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-3d45d55a.js"),["assets/inverter-3d45d55a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-df8e198a.js"),["assets/bat-df8e198a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-e15f2c06.js"),["assets/counter-e15f2c06.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-326280ce.js"),["assets/inverter-326280ce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-f963a986.js"),["assets/bat-f963a986.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-83354bca.js"),["assets/counter-83354bca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-8ca711bc.js"),["assets/inverter-8ca711bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-595642c8.js"),["assets/bat-595642c8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-3d819a6f.js"),["assets/inverter-3d819a6f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-e62d7b1e.js"),["assets/bat-e62d7b1e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-0524aa8c.js"),["assets/counter-0524aa8c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-47bedabe.js"),["assets/inverter-47bedabe.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-00e8bfb9.js"),["assets/counter-00e8bfb9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-25d1e220.js"),["assets/counter-25d1e220.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6ce20d89.js"),["assets/inverter-6ce20d89.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e8cdd332.js"),["assets/bat-e8cdd332.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-5d29a479.js"),["assets/bat_smart_energy-5d29a479.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-107b4963.js"),["assets/counter-107b4963.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-89491124.js"),["assets/inverter-89491124.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-ce4aa848.js"),["assets/bat-ce4aa848.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-92eb5977.js"),["assets/inverter-92eb5977.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-9c24dc5c.js"),["assets/counter-9c24dc5c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-af852271.js"),["assets/inverter-af852271.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-cd290a98.js"),["assets/counter-cd290a98.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-b09d3ede.js"),["assets/counter-b09d3ede.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-b1415371.js"),["assets/inverter-b1415371.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-fca60eb6.js"),["assets/counter-fca60eb6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-7f5cbd1f.js"),["assets/inverter-7f5cbd1f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-4b1f210f.js"),["assets/bat-4b1f210f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-32007d3e.js"),["assets/counter-32007d3e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-90b5924d.js"),["assets/inverter-90b5924d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-2fda105e.js"),["assets/counter-2fda105e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e3d31521.js"),["assets/inverter-e3d31521.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-f2ff4071.js"),["assets/bat-f2ff4071.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-71a69a0f.js"),["assets/counter-71a69a0f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-af9b2b79.js"),["assets/external_inverter-af9b2b79.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-5d68f662.js"),["assets/inverter-5d68f662.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b2de0630.js"),["assets/bat-b2de0630.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a532223b.js"),["assets/inverter-a532223b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-93524d1b.js"),["assets/bat-93524d1b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-09b39d2d.js"),["assets/counter-09b39d2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5cfbe42d.js"),["assets/inverter-5cfbe42d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-8c7d349e.js"),["assets/bat-8c7d349e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e7921fa4.js"),["assets/counter-e7921fa4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-a6e26156.js"),["assets/inverter-a6e26156.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-22a2eeff.js"),["assets/bat-22a2eeff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-d2ccf27d.js"),["assets/inverter-d2ccf27d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-7500700f.js"),["assets/bat-7500700f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-9513e8db.js"),["assets/counter-9513e8db.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-3fdb1742.js"),["assets/inverter-3fdb1742.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-b959eebb.js"),["assets/inverter-b959eebb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-9894d537.js"),["assets/bat-9894d537.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-25dcea49.js"),["assets/counter-25dcea49.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-c08d4e42.js"),["assets/inverter-c08d4e42.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-bbcd36bc.js"),["assets/bat_api-bbcd36bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-7b1ae23d.js"),["assets/bat_modbus-7b1ae23d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-5cb15a92.js"),["assets/counter-5cb15a92.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-6c62c4f0.js"),["assets/bat-6c62c4f0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-9a77fa00.js"),["assets/counter-9a77fa00.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-135f51a3.js"),["assets/inverter-135f51a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a13ecb51.js"),["assets/counter-a13ecb51.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-6264518e.js"),["assets/counter-6264518e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-9962a05f.js"),["assets/inverter-9962a05f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-a028ca0c.js"),["assets/inverter-a028ca0c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; +import{l as N,d as U,t as G,R as F,S as H,K as J,L as Z,M as Q,F as $}from"./vendor-fortawesome-838df0c9.js";import{_ as e,C as X}from"./index-2a1b0c80.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,p,k as a,l as c,A as n,L as i,u as v,x as A,q as m,a0 as W,y as l,a1 as Y,z as P,G as L,I as h,n as w,Q as ee,R as _e}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,o=void 0){this.$emit("update:configuration",{value:_,object:o})}}},oe={class:"device-fallback"},ie={key:0},re={key:1};function ne(_,o,u,O,s,r){const I=p("openwb-base-alert"),g=p("openwb-base-textarea");return a(),c("div",oe,[n(I,{subtype:"warning"},{default:i(()=>[v(" Es wurde keine Konfigurationsseite für den "),u.componentType?(a(),c("span",ie,' Komponenten-Typ "'+A(u.componentType)+'" ',1)):(a(),c("span",re,'Geräte-Typ "'+A(u.deviceType)+'"',1)),v(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":o[0]||(o[0]=R=>r.updateConfiguration(R,"configuration"))},{help:i(()=>[v(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(I,{subtype:"info"},{default:i(()=>[m("pre",null,A(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const S=y(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-d94203e2.js"),["assets/bat-d94203e2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-16bcb8fc.js"),["assets/counter-16bcb8fc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-eef610e6.js"),["assets/inverter-eef610e6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-17d0ebe7.js"),["assets/bat-17d0ebe7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-d1489ce8.js"),["assets/counter-d1489ce8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-21044b75.js"),["assets/external_inverter-21044b75.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-267fccce.js"),["assets/inverter-267fccce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-39b4c6ba.js"),["assets/bat-39b4c6ba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-08f8d2f2.js"),["assets/counter-08f8d2f2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-0d09b23e.js"),["assets/counter-0d09b23e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-96db7f1d.js"),["assets/inverter-96db7f1d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-d04d3f5b.js"),["assets/bat-d04d3f5b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-969297fa.js"),["assets/counter-969297fa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-5c208b04.js"),["assets/external_inverter-5c208b04.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-be6aac70.js"),["assets/inverter-be6aac70.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-2524acf0.js"),["assets/counter-2524acf0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-c90183ae.js"),["assets/inverter-c90183ae.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-3f0ca072.js"),["assets/bat-3f0ca072.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-57c9333b.js"),["assets/counter-57c9333b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-1c1592c9.js"),["assets/inverter-1c1592c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-514861df.js"),["assets/bat-514861df.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-ba7ae169.js"),["assets/counter_s0-ba7ae169.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ccecb663.js"),["assets/counter_sm-ccecb663.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-0fd0b224.js"),["assets/inverter-0fd0b224.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-874f748e.js"),["assets/bat-874f748e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-a3e434aa.js"),["assets/counter-a3e434aa.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-08367390.js"),["assets/inverter-08367390.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/bat.vue":()=>e(()=>import("./bat-0e028baf.js"),["assets/bat-0e028baf.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/counter.vue":()=>e(()=>import("./counter-75ce0061.js"),["assets/counter-75ce0061.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-15408a2b.js"),["assets/inverter-15408a2b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-46c566c9.js"),["assets/bat-46c566c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-45ecd9ff.js"),["assets/counter-45ecd9ff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-86ab0f22.js"),["assets/inverter-86ab0f22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-5b22e35d.js"),["assets/bat-5b22e35d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-6247163c.js"),["assets/counter-6247163c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4c98a82a.js"),["assets/inverter-4c98a82a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-1ddce36f.js"),["assets/counter-1ddce36f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/bat.vue":()=>e(()=>import("./bat-268a0365.js"),["assets/bat-268a0365.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/counter.vue":()=>e(()=>import("./counter-e3807695.js"),["assets/counter-e3807695.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5b0c8748.js"),["assets/inverter-5b0c8748.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-b4f1d52c.js"),["assets/counter-b4f1d52c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f399f0d.js"),["assets/inverter-1f399f0d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-8c6dadd9.js"),["assets/inverter-8c6dadd9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-ec698ff1.js"),["assets/bat-ec698ff1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-9a41f79b.js"),["assets/counter-9a41f79b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f9807fb1.js"),["assets/inverter-f9807fb1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-ed28bc4b.js"),["assets/counter-ed28bc4b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-508f415f.js"),["assets/inverter-508f415f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-0eeeca9c.js"),["assets/bat-0eeeca9c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-cf4834fd.js"),["assets/counter-cf4834fd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-e5461fd3.js"),["assets/inverter-e5461fd3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-3af1a10a.js"),["assets/bat-3af1a10a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-1516cbf4.js"),["assets/counter-1516cbf4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-40f5b027.js"),["assets/inverter-40f5b027.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-bbb09227.js"),["assets/bat-bbb09227.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-27edc2dc.js"),["assets/bat-27edc2dc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-4fb4e495.js"),["assets/counter-4fb4e495.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-a4741525.js"),["assets/inverter-a4741525.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-aaf46348.js"),["assets/bat-aaf46348.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-0abbb386.js"),["assets/counter-0abbb386.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-d02eb41e.js"),["assets/inverter-d02eb41e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-1b75ddba.js"),["assets/inverter-1b75ddba.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-c9dc9c81.js"),["assets/counter-c9dc9c81.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-f7d9af29.js"),["assets/inverter-f7d9af29.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-b804ace4.js"),["assets/counter-b804ace4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-3d45d55a.js"),["assets/inverter-3d45d55a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-df8e198a.js"),["assets/bat-df8e198a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-e15f2c06.js"),["assets/counter-e15f2c06.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-326280ce.js"),["assets/inverter-326280ce.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-f963a986.js"),["assets/bat-f963a986.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-83354bca.js"),["assets/counter-83354bca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-8ca711bc.js"),["assets/inverter-8ca711bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-595642c8.js"),["assets/bat-595642c8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-3d819a6f.js"),["assets/inverter-3d819a6f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-e62d7b1e.js"),["assets/bat-e62d7b1e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-0524aa8c.js"),["assets/counter-0524aa8c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-47bedabe.js"),["assets/inverter-47bedabe.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-00e8bfb9.js"),["assets/counter-00e8bfb9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-25d1e220.js"),["assets/counter-25d1e220.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-6ce20d89.js"),["assets/inverter-6ce20d89.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e8cdd332.js"),["assets/bat-e8cdd332.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-5d29a479.js"),["assets/bat_smart_energy-5d29a479.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-107b4963.js"),["assets/counter-107b4963.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-89491124.js"),["assets/inverter-89491124.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-ce4aa848.js"),["assets/bat-ce4aa848.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-92eb5977.js"),["assets/inverter-92eb5977.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-9c24dc5c.js"),["assets/counter-9c24dc5c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-af852271.js"),["assets/inverter-af852271.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-cd290a98.js"),["assets/counter-cd290a98.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-b09d3ede.js"),["assets/counter-b09d3ede.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-b1415371.js"),["assets/inverter-b1415371.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-fca60eb6.js"),["assets/counter-fca60eb6.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-7f5cbd1f.js"),["assets/inverter-7f5cbd1f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-4b1f210f.js"),["assets/bat-4b1f210f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-32007d3e.js"),["assets/counter-32007d3e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-90b5924d.js"),["assets/inverter-90b5924d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-2fda105e.js"),["assets/counter-2fda105e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-e3d31521.js"),["assets/inverter-e3d31521.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-f2ff4071.js"),["assets/bat-f2ff4071.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-71a69a0f.js"),["assets/counter-71a69a0f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-af9b2b79.js"),["assets/external_inverter-af9b2b79.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-5d68f662.js"),["assets/inverter-5d68f662.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-b2de0630.js"),["assets/bat-b2de0630.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-a532223b.js"),["assets/inverter-a532223b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-93524d1b.js"),["assets/bat-93524d1b.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-09b39d2d.js"),["assets/counter-09b39d2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5cfbe42d.js"),["assets/inverter-5cfbe42d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-8c7d349e.js"),["assets/bat-8c7d349e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e7921fa4.js"),["assets/counter-e7921fa4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-a6e26156.js"),["assets/inverter-a6e26156.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-22a2eeff.js"),["assets/bat-22a2eeff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-d2ccf27d.js"),["assets/inverter-d2ccf27d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-7500700f.js"),["assets/bat-7500700f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-9513e8db.js"),["assets/counter-9513e8db.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-3fdb1742.js"),["assets/inverter-3fdb1742.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-b959eebb.js"),["assets/inverter-b959eebb.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-9894d537.js"),["assets/bat-9894d537.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-25dcea49.js"),["assets/counter-25dcea49.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-c08d4e42.js"),["assets/inverter-c08d4e42.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-bbcd36bc.js"),["assets/bat_api-bbcd36bc.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-7b1ae23d.js"),["assets/bat_modbus-7b1ae23d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-5cb15a92.js"),["assets/counter-5cb15a92.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-6c62c4f0.js"),["assets/bat-6c62c4f0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-9a77fa00.js"),["assets/counter-9a77fa00.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-135f51a3.js"),["assets/inverter-135f51a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a13ecb51.js"),["assets/counter-a13ecb51.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-6264518e.js"),["assets/counter-6264518e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-9962a05f.js"),["assets/inverter-9962a05f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-a028ca0c.js"),["assets/inverter-a028ca0c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-509acf7c.js"),["assets/device-509acf7c.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./batterx/device.vue":()=>e(()=>import("./device-9444169d.js"),["assets/device-9444169d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./byd/device.vue":()=>e(()=>import("./device-cc75d571.js"),["assets/device-cc75d571.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-e67da7c1.js"),["assets/device-e67da7c1.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-d57c20ac.js"),["assets/device-d57c20ac.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-f356c73d.js"),["assets/device-f356c73d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./enphase/device.vue":()=>e(()=>import("./device-1548812a.js"),["assets/device-1548812a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fems/device.vue":()=>e(()=>import("./device-e95c0504.js"),["assets/device-e95c0504.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./fronius/device.vue":()=>e(()=>import("./device-c7f104f4.js"),["assets/device-c7f104f4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./good_we/device.vue":()=>e(()=>import("./device-1a05e97a.js"),["assets/device-1a05e97a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/device.vue":()=>e(()=>import("./device-e41e1249.js"),["assets/device-e41e1249.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei/device.vue":()=>e(()=>import("./device-bfd97b22.js"),["assets/device-bfd97b22.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-3f5084e0.js"),["assets/device-3f5084e0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./janitza/device.vue":()=>e(()=>import("./device-a2d2f22a.js"),["assets/device-a2d2f22a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./json/device.vue":()=>e(()=>import("./device-d3107147.js"),["assets/device-d3107147.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-a81f5544.js"),["assets/device-a81f5544.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-5b3585a3.js"),["assets/device-5b3585a3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-28066804.js"),["assets/device-28066804.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-e97ebded.js"),["assets/device-e97ebded.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-895b9b05.js"),["assets/device-895b9b05.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./lg/device.vue":()=>e(()=>import("./device-e5846fb7.js"),["assets/device-e5846fb7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-49750792.js"),["assets/device-49750792.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-a88fff7e.js"),["assets/device-a88fff7e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-e690bc67.js"),["assets/device-e690bc67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-0ec37631.js"),["assets/device-0ec37631.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-4005e628.js"),["assets/device-4005e628.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b1434489.js"),["assets/device-b1434489.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-8715b56d.js"),["assets/device-8715b56d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./qcells/device.vue":()=>e(()=>import("./device-8271ebf3.js"),["assets/device-8271ebf3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./rct/device.vue":()=>e(()=>import("./device-3fe4b5f3.js"),["assets/device-3fe4b5f3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-a394c36e.js"),["assets/device-a394c36e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./shelly/device.vue":()=>e(()=>import("./device-e8e7a237.js"),["assets/device-e8e7a237.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens/device.vue":()=>e(()=>import("./device-bf858f4d.js"),["assets/device-bf858f4d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-7e999eff.js"),["assets/device-7e999eff.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-3711a41a.js"),["assets/device-3711a41a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-6422d305.js"),["assets/device-6422d305.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-d4d23cd7.js"),["assets/device-d4d23cd7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-c365f5a7.js"),["assets/device-c365f5a7.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-95bb6ed4.js"),["assets/device-95bb6ed4.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-d6905669.js"),["assets/device-d6905669.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-52389f33.js"),["assets/device-52389f33.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-3330c205.js"),["assets/device-3330c205.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-11080b2d.js"),["assets/device-11080b2d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-72498906.js"),["assets/device-72498906.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-eb39e5e3.js"),["assets/device-eb39e5e3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-e304fcca.js"),["assets/device-e304fcca.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./solax/device.vue":()=>e(()=>import("./device-4c8d99b2.js"),["assets/device-4c8d99b2.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-0be142e9.js"),["assets/device-0be142e9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./studer/device.vue":()=>e(()=>import("./device-f422a199.js"),["assets/device-f422a199.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-69672183.js"),["assets/device-69672183.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./sunways/device.vue":()=>e(()=>import("./device-1034f28e.js"),["assets/device-1034f28e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/device.vue":()=>e(()=>import("./device-ac3bc5b3.js"),["assets/device-ac3bc5b3.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./varta/device.vue":()=>e(()=>import("./device-246d5e43.js"),["assets/device-246d5e43.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./victron/device.vue":()=>e(()=>import("./device-84570e67.js"),["assets/device-84570e67.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./virtual/device.vue":()=>e(()=>import("./device-81934251.js"),["assets/device-81934251.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-4a98b784.js"),["assets/device-4a98b784.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./youless/device.vue":()=>e(()=>import("./device-3ddc3e24.js"),["assets/device-3ddc3e24.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function de(_,o,u,O,s,r){return a(),l(Y(r.myComponent),{configuration:u.configuration,deviceId:u.deviceId,deviceType:u.deviceType,componentId:u.componentId,componentType:u.componentType,"onUpdate:configuration":o[0]||(o[0]=I=>r.updateConfiguration(I))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const ve=y(ue,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const ae={name:"OpenwbHardwareInstallation",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:$,OpenwbConfigProxy:ve},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],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")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,o,u){u.stopPropagation(),this.modalDevice=_,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,o,u){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:o,type:u}})},removeComponentModal(_,o,u,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:o,type:u},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(u=>u.value===_).component)},updateConfiguration(_,o){console.debug("updateConfiguration",_,o),this.updateState(_,o.value,o.object)}}},E=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),se={class:"hardwareInstallation"},me={name:"hardwareInstallationForm"},pe={key:0},ce={key:1},Ee={key:1},le=E(()=>m("hr",null,null,-1)),Te=E(()=>m("hr",null,null,-1)),Ie=E(()=>m("hr",null,null,-1)),Ve=E(()=>m("hr",null,null,-1)),Ae={class:"col-1"},Re={key:0},De={class:"col-1"},Pe=E(()=>m("br",null,null,-1)),Oe=E(()=>m("br",null,null,-1)),Le=E(()=>m("br",null,null,-1)),ge=E(()=>m("br",null,null,-1)),be=E(()=>m("br",null,null,-1)),fe=E(()=>m("br",null,null,-1));function he(_,o,u,O,s,r){const I=p("openwb-base-modal-dialog"),g=p("router-link"),R=p("openwb-base-alert"),V=p("font-awesome-icon"),b=p("openwb-base-avatar"),k=p("openwb-base-text-input"),C=p("openwb-config-proxy"),q=p("openwb-base-heading"),f=p("openwb-base-card"),x=p("openwb-base-click-button"),B=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return a(),c(L,null,[P(" modal dialogs "),n(I,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeDevice},{default:i(()=>[v(' Wollen Sie das Gerät "'+A(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),n(I,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r.removeComponent},{default:i(()=>[v(' Wollen Sie die Komponente "'+A(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),P(" main content "),m("div",se,[m("form",me,[n(R,{subtype:"info"},{default:i(()=>[v(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),n(g,{to:"/LoadManagementConfiguration"},{default:i(()=>[v(" Lastmanagement ")]),_:1}),v(" zu prüfen! ")]),_:1}),n(f,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(a(),c("div",pe,[n(R,{subtype:"info"},{default:i(()=>[v(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),c("div",ce,[(a(!0),c(L,null,h(r.installedDevices,(t,z)=>(a(),l(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[n(V,{"fixed-width":"",icon:["fas","network-wired"]}),v(" "+A(t.name),1)]),actions:i(d=>[d.collapsed?(a(),c("div",Ee,[(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),T=>(a(),l(b,{key:T.id,class:w("ml-1 bg-"+r.getComponentTypeClass(T.type))},{default:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(T.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:T=>r.removeDeviceModal(t.id,t.name,T)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(z,d,"name")},null,8,["model-value","onUpdate:modelValue"]),le,n(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>r.updateConfiguration(z,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Te,n(q,null,{default:i(()=>[v("Komponenten")]),_:1}),r.deviceHasConfiguredComponents(t.id)?P("v-if",!0):(a(),l(R,{key:0,subtype:"warning"},{default:i(()=>[v(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(a(!0),c(L,null,h(r.getMyInstalledComponents(t.id),(d,T)=>(a(),l(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:r.getComponentTypeClass(d.type)},{header:i(()=>[n(V,{"fixed-width":"",icon:r.getComponentTypeIcon(d.type)},null,8,["icon"]),v(" "+A(d.name),1)]),actions:i(D=>[D.collapsed?P("v-if",!0):(a(),l(b,{key:0,class:"bg-danger clickable",onClick:K=>r.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[n(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":D=>_.updateState(T,D,"name")},null,8,["model-value","onUpdate:modelValue"]),Ie,n(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":D=>r.updateConfiguration(T,D)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Ve,r.getComponentList(t.type).length?(a(),l(B,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:r.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:i(()=>[m("span",Ae,[n(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>r.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(" 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"])):(a(),l(R,{key:2,subtype:"info"},{default:i(()=>[v(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(r.installedDevices).length>0?(a(),c("hr",Re)):P("v-if",!0),n(B,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:r.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":o[0]||(o[0]=t=>s.deviceToAdd=t)},{append:i(()=>[m("span",De,[n(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:r.addDevice},{default:i(()=>[n(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[v(' Die openWB-Regelung ist auf Werte von MESSPUNKTEN (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),Pe,v(' Ein "Gerät" wird hierbei durch seine 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".'),Oe,Le,v(' 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.'),ge,v(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt.'),be,fe,v(' 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},8,["options","model-value"])]))]),_:1}),n(j,{formName:"hardwareInstallationForm",onSave:o[1]||(o[1]=t=>_.$emit("save")),onReset:o[2]||(o[2]=t=>_.$emit("reset")),onDefaults:o[3]||(o[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(ae,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default}; diff --git a/web/settings/assets/InstantChargeConfig-30b13a1a.js b/web/settings/assets/InstantChargeConfig-81ae89da.js similarity index 96% rename from web/settings/assets/InstantChargeConfig-30b13a1a.js rename to web/settings/assets/InstantChargeConfig-81ae89da.js index 7ad55973c4..4b67a10b94 100644 --- a/web/settings/assets/InstantChargeConfig-30b13a1a.js +++ b/web/settings/assets/InstantChargeConfig-81ae89da.js @@ -1 +1 @@ -import{C as l}from"./index-f08a7306.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; +import{C as l}from"./index-2a1b0c80.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbInstantChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},C={key:1};function w(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[s(m,{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(()=>[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,{formName:"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=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{A as default}; diff --git a/web/settings/assets/LegalSettings-f8ef4166.js b/web/settings/assets/LegalSettings-67cbbf35.js similarity index 97% rename from web/settings/assets/LegalSettings-f8ef4166.js rename to web/settings/assets/LegalSettings-67cbbf35.js index e5b6f0b585..2434a4e83f 100644 --- a/web/settings/assets/LegalSettings-f8ef4166.js +++ b/web/settings/assets/LegalSettings-67cbbf35.js @@ -1 +1 @@ -import{C as g}from"./index-f08a7306.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; +import{C as g}from"./index-2a1b0c80.js";import{_,p as o,k as r,l as w,q as u,A as s,L as a,y as d,u as p,z as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const f={name:"OpenwbDataProtection",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}}},k={class:"dataProtection"},h={name:"dataProtectionForm"},v=u("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),B=u("hr",null,null,-1);function y(e,t,z,V,W,$){const i=o("openwb-base-button-group-input"),l=o("openwb-base-alert"),c=o("openwb-base-submit-buttons"),b=o("openwb-base-card");return r(),w("div",k,[u("form",h,[s(b,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[s(c,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:t[2]||(t[2]=n=>e.$emit("save"))})]),default:a(()=>[v,B,s(i,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/system/usage_terms_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?m("v-if",!0):(r(),d(l,{key:0,subtype:"danger"},{default:a(()=>[p(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")]),_:1})),s(i,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/system/dataprotection_acknowledged",n))},null,8,["model-value"]),e.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?m("v-if",!0):(r(),d(l,{key:1,subtype:"warning"},{default:a(()=>[p(" Wenn sie nicht einwilligen, 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 x=_(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{x as default}; diff --git a/web/settings/assets/LoadManagementConfig-ca6e28c3.js b/web/settings/assets/LoadManagementConfig-0263daa7.js similarity index 99% rename from web/settings/assets/LoadManagementConfig-ca6e28c3.js rename to web/settings/assets/LoadManagementConfig-0263daa7.js index 4fbddbfc3a..5bc7f2acce 100644 --- a/web/settings/assets/LoadManagementConfig-ca6e28c3.js +++ b/web/settings/assets/LoadManagementConfig-0263daa7.js @@ -1 +1 @@ -import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as $}from"./index-f08a7306.js";import{S as x}from"./OpenwbSortableList-ac8ac331.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; +import{l as z,L as S,M as C,F as L}from"./vendor-fortawesome-838df0c9.js";import{C as $}from"./index-2a1b0c80.js";import{S as x}from"./OpenwbSortableList-ac8ac331.js";import{_ as V,p as u,k as l,l as m,q as d,A as s,L as r,u as o,G as _,I as v,y as w,x as k,z as M}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";z.add(S,C);const q={name:"OpenwbLoadManagementConfig",mixins:[$],emits:["sendCommand"],components:{SortableList:x,FontAwesomeIcon:L},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,i)=>({...t,[i]:e[i]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let i=this.getChargePoint(e.id);i&&(t[e.id]=i.name)}else{let i=this.getComponent(e.id);i&&(t[e.id]=i.name)}return e.children.forEach(i=>{t={...t,...this.getElementTreeNames(i)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(i=>{i.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[i])}),t}}},F={class:"loadManagementConfig"},Z={name:"loadManagementConfigForm"},A={key:0},D={key:1},E=d("br",null,null,-1),U=d("br",null,null,-1),N=d("br",null,null,-1),P=d("br",null,null,-1),T=d("br",null,null,-1),O={key:0},j={key:1},R=d("br",null,null,-1),G=d("br",null,null,-1),K=d("br",null,null,-1);function H(e,t,i,I,J,g){const h=u("openwb-base-alert"),W=u("openwb-base-button-group-input"),f=u("openwb-base-heading"),b=u("font-awesome-icon"),c=u("openwb-base-number-input"),p=u("openwb-base-card"),B=u("sortable-list"),y=u("openwb-base-submit-buttons");return l(),m("div",F,[d("form",Z,[s(p,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",A,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",D,[s(W,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[o(" Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe 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."),E,o(" Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom."),U,N,o(" Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden."),P,o(" 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."),T,o(" Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ")]),_:1},8,["model-value"]),s(f,null,{default:r(()=>[o(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[o(" 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. ")]),_:1}),(l(!0),m(_,null,v(g.counterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[o(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(c,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[o(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[o(" Vorhandene Wechselrichtermodule ")]),_:1}),(l(!0),m(_,null,v(g.inverterConfigs,n=>(l(),w(p,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),o(" "+k(n.name),1)]),default:r(()=>[s(c,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[o(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(p,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",O,[s(h,{subtype:"info"},{default:r(()=>[o(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",j,[M(" ToDo: Fix: nested lists bypass store commits! "),s(B,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:g.hierarchyLabels},{help:r(()=>[o(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),R,o(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),G,o(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,o(" 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(y,{formName:"loadManagementConfigForm",onSave:t[2]||(t[2]=n=>e.$emit("save")),onReset:t[3]||(t[3]=n=>e.$emit("reset")),onDefaults:t[4]||(t[4]=n=>e.$emit("defaults"))})])])}const re=V(q,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default}; diff --git a/web/settings/assets/MqttBridgeConfig-5474c1b1.js b/web/settings/assets/MqttBridgeConfig-f4b2ee1b.js similarity index 99% rename from web/settings/assets/MqttBridgeConfig-5474c1b1.js rename to web/settings/assets/MqttBridgeConfig-f4b2ee1b.js index 4869a45726..b7a6b4d53f 100644 --- a/web/settings/assets/MqttBridgeConfig-5474c1b1.js +++ b/web/settings/assets/MqttBridgeConfig-f4b2ee1b.js @@ -1 +1 @@ -import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as D}from"./index-f08a7306.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,v]of Object.entries(e))v.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},g=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=g(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=g(()=>f("hr",null,null,-1)),R=g(()=>f("hr",null,null,-1));function j(e,u,v,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),k=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),M=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(M,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(M,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(k,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(k,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; +import{l as C,d as q,S as A,F as z}from"./vendor-fortawesome-838df0c9.js";import{C as D}from"./index-2a1b0c80.js";import{_ as I,p as r,k as m,l as c,z as b,A as n,L as o,q as f,G as T,u as s,x as y,y as S,I as W,Q as E,R as Q}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";C.add(q,A);const N={name:"OpenwbMqttBridgeConfiguration",mixins:[D],emits:["sendCommand"],components:{FontAwesomeIcon:z},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,v]of Object.entries(e))v.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},g=e=>(E("data-v-1ec2f2f5"),e=e(),Q(),e),P={class:"mqttBridgeConfiguration"},Z=g(()=>f("br",null,null,-1)),L={key:0},F={key:1},$=["name"],O=g(()=>f("hr",null,null,-1)),R=g(()=>f("hr",null,null,-1));function j(e,u,v,G,h,i){const U=r("openwb-base-modal-dialog"),_=r("openwb-base-alert"),w=r("font-awesome-icon"),V=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),k=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),M=r("openwb-base-card");return m(),c(T,null,[b(" modal dialogs "),n(U,{show:h.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(h.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(h.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b(" main content "),f("div",P,[n(_,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,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-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(M,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),S(V,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("v-if",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",L,[n(_,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",F,[Object.keys(i.configuredMqttBridges).length===0?(m(),S(_,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):b("v-if",!0),(m(!0),c(T,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(M,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(V,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(w,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(k,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[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äfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(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":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[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"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[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"]),R,n(k,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(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":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(N,[["render",j],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default}; diff --git a/web/settings/assets/OptionalComponents-4617e1d7.js b/web/settings/assets/OptionalComponents-560c0e0a.js similarity index 73% rename from web/settings/assets/OptionalComponents-4617e1d7.js rename to web/settings/assets/OptionalComponents-560c0e0a.js index 9fc8d7c774..ef3118c086 100644 --- a/web/settings/assets/OptionalComponents-4617e1d7.js +++ b/web/settings/assets/OptionalComponents-560c0e0a.js @@ -1,4 +1,4 @@ -import{_ as w,C as B}from"./index-f08a7306.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as D,p as s,k as f,l as b,A as o,L as a,u as l,x,q as i,a0 as T,y as _,a1 as $,z as r}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function V(t,n,u,c,g,d){const p=s("openwb-base-alert"),v=s("openwb-base-textarea");return f(),b("div",q,[o(p,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für das Display Theme "'+x(u.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>d.updateConfiguration(m,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:a(()=>[i("pre",null,x(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const A=D(S,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),z={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),T({loader:()=>W(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-35595a93.js"),["assets/displayTheme-35595a93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function C(t,n,u,c,g,d){return f(),_($(d.myComponent),{configuration:u.configuration,displayThemeType:u.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=p=>d.updateConfiguration(p))},null,40,["configuration","displayThemeType"])}const O=D(z,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),I={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:O},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/extern_display_mode","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"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},P={name:"optionalComponentsForm"},F={key:0},R=i("br",null,null,-1),M=i("br",null,null,-1),U=["innerHTML"],j={key:0},H=i("br",null,null,-1),J=i("hr",null,null,-1),Z={key:1},K=i("hr",null,null,-1),G=i("br",null,null,-1),Q=i("hr",null,null,-1),X={key:2},Y=i("hr",null,null,-1),tt=i("hr",null,null,-1),nt={key:0};function et(t,n,u,c,g,d){const p=s("openwb-base-button-group-input"),v=s("openwb-base-alert"),m=s("openwb-base-card"),y=s("openwb-base-heading"),h=s("openwb-base-range-input"),k=s("openwb-base-select-input"),L=s("openwb-display-theme-proxy"),E=s("openwb-base-submit-buttons");return f(),b("div",N,[i("form",P,[o(m,{title:"RFID"},{default:a(()=>[o(p,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:a(()=>[l(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(f(),b("div",F,[o(v,{subtype:"info"},{default:a(()=>[l(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,l(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,i("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,U)]),_:1})])):r("v-if",!0)]),_:1}),r(` +import{_ as w,C as B}from"./index-2a1b0c80.js";import{_ as W}from"./dynamic-import-helper-be004503.js";import{_ as D,p as i,k as d,l as b,A as o,L as l,u as a,x as k,q as s,a0 as T,y as x,a1 as $,z as f}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"DisplayThemeFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},displayThemeType:{type:String}},methods:{updateConfiguration(t,n=void 0){this.$emit("update:configuration",{value:t,object:n})}}},q={class:"display-theme-fallback"};function A(t,n,u,c,g,r){const p=i("openwb-base-alert"),v=i("openwb-base-textarea");return d(),b("div",q,[o(p,{subtype:"warning"},{default:l(()=>[a(' Es wurde keine Konfigurationsseite für das Display Theme "'+k(u.displayThemeType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(v,{title:"Konfiguration",subtype:"json","model-value":u.configuration,"onUpdate:modelValue":n[0]||(n[0]=m=>r.updateConfiguration(m,"configuration"))},{help:l(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(p,{subtype:"info"},{default:l(()=>[s("pre",null,k(JSON.stringify(u.configuration,void 0,2)),1)]),_:1})])}const V=D(S,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]),z={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayThemeType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayThemeType}`),T({loader:()=>W(Object.assign({"./cards/displayTheme.vue":()=>w(()=>import("./displayTheme-35595a93.js"),["assets/displayTheme-35595a93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.displayThemeType}/displayTheme.vue`),errorComponent:V})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function C(t,n,u,c,g,r){return d(),x($(r.myComponent),{configuration:u.configuration,displayThemeType:u.displayThemeType,"onUpdate:configuration":n[0]||(n[0]=p=>r.updateConfiguration(p))},null,40,["configuration","displayThemeType"])}const O=D(z,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),I={name:"OpenwbOptionalComponents",mixins:[B],components:{OpenwbDisplayThemeProxy:O},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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"]}},computed:{displayThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]}}},methods:{getDisplayThemeDefaultConfiguration(t){const n=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(n,"defaults")?{...n.defaults.configuration}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",t,"type"),this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaultConfiguration(t),"configuration")},updateConfiguration(t,n){console.debug("updateConfiguration",t,n),this.updateState(t,n.value,n.object)}}},N={class:"optionalComponents"},P={name:"optionalComponentsForm"},F={key:0},R=s("br",null,null,-1),M=s("br",null,null,-1),j=["innerHTML"],U={key:0},H=s("br",null,null,-1),J=s("hr",null,null,-1),Z={key:1},K=s("hr",null,null,-1),G={key:2},Q=s("hr",null,null,-1),X=s("hr",null,null,-1),Y={key:0};function tt(t,n,u,c,g,r){const p=i("openwb-base-button-group-input"),v=i("openwb-base-alert"),m=i("openwb-base-card"),_=i("openwb-base-heading"),y=i("openwb-base-range-input"),h=i("openwb-base-select-input"),L=i("openwb-display-theme-proxy"),E=i("openwb-base-submit-buttons");return d(),b("div",N,[s("form",P,[o(m,{title:"RFID"},{default:l(()=>[o(p,{title:"RFID aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":n[0]||(n[0]=e=>t.updateState("openWB/optional/rfid/active",e)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[a(" Dies bedingt das Vorhandensein eines RFID-Readers in deiner openWB. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ")]),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(d(),b("div",F,[o(v,{subtype:"info"},{default:l(()=>[a(" Die RFID-Tags, die an dem jeweiligen Ladepunkt gültig sind, müssen in dem Ladepunkt-Profil hinterlegt werden. Der RFID-Tag muss in den Einstellungen des Fahrzeugs diesem zugeordnet werden."),R,a(" Es kann zuerst angesteckt und dann der RFID-Tag gescannt werden oder zuerst der RFID-Tag gescannt werden. Dann muss innerhalb von 5 Minuten ein Auto angesteckt werden, sonst wird der RFID-Tag verworfen. Das Auto wird erst nach dem Anstecken zugeordnet."),M,s("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,j)]),_:1})])):f("v-if",!0)]),_:1}),f(` - `),o(m,{title:"Display (intern oder extern)"},{default:a(()=>[o(p,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":n[1]||(n[1]=e=>t.updateState("openWB/optional/int_display/active",e)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:a(()=>[l(' 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?(f(),b("div",j,[o(p,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":n[2]||(n[2]=e=>t.updateState("openWB/optional/int_display/rotation",e)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:a(()=>[l(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),H,l(" Diese Einstellung erfordert ein Raspberry Pi Display. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),J,o(y,null,{default:a(()=>[l(" Display Standby ")]),_:1}),o(h,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":n[3]||(n[3]=e=>t.updateState("openWB/optional/int_display/standby",e)),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}]},{help:a(()=>[l(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"]),r(` `),o(m,{title:"Display (intern oder extern)"},{default:l(()=>[o(p,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":n[1]||(n[1]=e=>t.updateState("openWB/optional/int_display/active",e)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:l(()=>[a(' 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?(d(),b("div",U,[o(p,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":n[2]||(n[2]=e=>t.updateState("openWB/optional/int_display/rotation",e)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:l(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),H,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),J,o(_,null,{default:l(()=>[a(" Display Standby ")]),_:1}),o(y,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":n[3]||(n[3]=e=>t.updateState("openWB/optional/int_display/standby",e)),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}]},{help:l(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"]),f(` - `)])):r("v-if",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(f(),b("div",Z,[K,o(k,{title:"Art der Anzeige",options:[{value:"primary",text:"Primary openWB"},{value:"local",text:"diese(r) Ladepunkt(e)"}],"model-value":t.$store.state.mqtt["openWB/general/extern_display_mode"],"onUpdate:modelValue":n[4]||(n[4]=e=>t.updateState("openWB/general/extern_display_mode",e))},{help:a(()=>[l(' Wird hier "Primary openWB" ausgewählt, dann ist die Darstellung identisch zum Display der regelnden openWB. Alle Anzeigen und Änderungen sind möglich. Je nach Einstellung in der primary openWB werden die angezeigten Ladepunkte auf den/die an dieser openWB vorhandenen Ladepunkte beschränkt.'),G,l(' Die Option "diese(r) Ladepunkt(e)" ermöglicht eine minimale Anzeige und Bedienung der an dieser openWB verfügbaren Ladepunkte. ')]),_:1},8,["options","model-value"]),Q,o(v,{subtype:"info"},{default:a(()=>[l(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(f(),b("div",X,[r(`
+
`)])):f("v-if",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),b("div",Z,[f(`
+ + + `),K,o(v,{subtype:"info"},{default:l(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),b("div",G,[f(`
PIN-Sperre - `),Y,o(p,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":n[5]||(n[5]=e=>t.updateState("openWB/optional/int_display/only_local_charge_points",e)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:a(()=>[l(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),tt,t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(f(),b("div",nt,[o(k,{class:"mb-2",title:"Theme des Displays",options:d.displayThemeList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":n[6]||(n[6]=e=>d.updateSelectedDisplayTheme(e))},{help:a(()=>[l(" 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,["options","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(f(),_(L,{key:0,displayThemeType:t.$store.state.mqtt["openWB/optional/int_display/theme"].type,configuration:t.$store.state.mqtt["openWB/optional/int_display/theme"].configuration,"onUpdate:configuration":n[7]||(n[7]=e=>d.updateConfiguration("openWB/optional/int_display/theme",e))},null,8,["displayThemeType","configuration"])):r("v-if",!0)])):r("v-if",!0)]))]),_:1}),r(` + `),Q,o(p,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":n[4]||(n[4]=e=>t.updateState("openWB/optional/int_display/only_local_charge_points",e)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:l(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),X,t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(d(),b("div",Y,[o(h,{class:"mb-2",title:"Theme des Displays",options:r.displayThemeList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":n[5]||(n[5]=e=>r.updateSelectedDisplayTheme(e))},{help:l(()=>[a(" 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,["options","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(d(),x(L,{key:0,displayThemeType:t.$store.state.mqtt["openWB/optional/int_display/theme"].type,configuration:t.$store.state.mqtt["openWB/optional/int_display/theme"].configuration,"onUpdate:configuration":n[6]||(n[6]=e=>r.updateConfiguration("openWB/optional/int_display/theme",e))},null,8,["displayThemeType","configuration"])):f("v-if",!0)])):f("v-if",!0)]))]),_:1}),f(`
Diese Einstellungen sind nicht verfügbar, solange sich @@ -1079,4 +1115,4 @@ import{_ as w,C as B}from"./index-f08a7306.js";import{_ as W}from"./dynamic-impo />
-
`),o(E,{formName:"optionalComponentsForm",onSave:n[8]||(n[8]=e=>t.$emit("save")),onReset:n[9]||(n[9]=e=>t.$emit("reset")),onDefaults:n[10]||(n[10]=e=>t.$emit("defaults"))})])])}const dt=D(I,[["render",et],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{dt as default}; +
`),o(E,{formName:"optionalComponentsForm",onSave:n[7]||(n[7]=e=>t.$emit("save")),onReset:n[8]||(n[8]=e=>t.$emit("reset")),onDefaults:n[9]||(n[9]=e=>t.$emit("defaults"))})])])}const pt=D(I,[["render",tt],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{pt as default}; diff --git a/web/settings/assets/PVChargeConfig-7b09b63a.js b/web/settings/assets/PVChargeConfig-42aae27d.js similarity index 99% rename from web/settings/assets/PVChargeConfig-7b09b63a.js rename to web/settings/assets/PVChargeConfig-42aae27d.js index 7de33bd966..c7979faf31 100644 --- a/web/settings/assets/PVChargeConfig-7b09b63a.js +++ b/web/settings/assets/PVChargeConfig-42aae27d.js @@ -1 +1 @@ -import{C as f}from"./index-f08a7306.js";import{_ as w,p as g,k as d,l as u,q as r,A as l,L as i,u as a,y as W,z as B}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"OpenwbPVChargeConfig",mixins:[f],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];var h="individual";return typeof n<"u"&&(n[0]===-230&&n[1]===0?h="export":n[0]===0&&n[1]===230?h="import":h="individual"),h},set(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=e,e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break}}}},methods:{updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}},watch:{controlMode(e){this.calculatedControlMode=e}}},V={class:"pvChargeConfig"},z={name:"pvChargeConfigForm"},E={key:0},k={key:1},C=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),L=r("br",null,null,-1),U=r("hr",null,null,-1),q=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),A={key:0},R={key:1},I={key:0},F={key:1},N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("br",null,null,-1),G=r("hr",null,null,-1);function K(e,n,h,j,J,s){const p=g("openwb-base-alert"),m=g("openwb-base-button-group-input"),o=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("openwb-base-range-input"),v=g("openwb-base-heading"),b=g("openwb-base-submit-buttons");return d(),u("div",V,[r("form",z,[l(_,{title:"Regelparameter"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",E,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",k,[l(m,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],modelValue:s.controlMode,"onUpdate:modelValue":n[0]||(n[0]=t=>s.controlMode=t)},{help:i(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["modelValue"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:i(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:i(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),C,l(o,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),l(o,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:i(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),y,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),M,l(o,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),l(o,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:i(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),L,a(" 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"]),U,l(o,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:i(()=>[a(" 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)."),q,a(' 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).'),P,a(' 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.'),$,a(" 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}),l(_,{title:"Phasenumschaltung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",A,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",R,[l(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:i(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(d(),W(c,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:i(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):B("v-if",!0)]))]),_:1}),l(_,{title:"Speicher-Beachtung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",I,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",F,[l(m,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:i(()=>[a(' 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.'),N,D,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),O,Z,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),T,H,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),l(o,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:i(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),l(o,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:i(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),l(c,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:i(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),G,l(v,null,{default:i(()=>[a(" Laden mit Mindeststrom ")]),_:1}),l(c,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>s.updateBatterySwitchOnSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),l(c,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>s.updateBatterySwitchOffSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),l(b,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=w(S,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; +import{C as f}from"./index-2a1b0c80.js";import{_ as w,p as g,k as d,l as u,q as r,A as l,L as i,u as a,y as W,z as B}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const S={name:"OpenwbPVChargeConfig",mixins:[f],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/phase_switch_delay","openWB/general/chargemode_config/pv_charging/bat_prio","openWB/general/chargemode_config/pv_charging/switch_on_soc","openWB/general/chargemode_config/pv_charging/switch_off_soc","openWB/general/chargemode_config/pv_charging/charging_power_reserve","openWB/general/chargemode_config/pv_charging/rundown_power","openWB/general/chargemode_config/pv_charging/rundown_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const e="openWB/general/chargemode_config/pv_charging/control_range";let n=this.$store.state.mqtt[e];var h="individual";return typeof n<"u"&&(n[0]===-230&&n[1]===0?h="export":n[0]===0&&n[1]===230?h="import":h="individual"),h},set(e){const n="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=e,e){case"export":this.updateState(n,[-230,0]);break;case"import":this.updateState(n,[0,230]);break}}}},methods:{updateBatterySwitchOnSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e),e<=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",Math.max(0,e-5))},updateBatterySwitchOffSoc(e){this.updateState("openWB/general/chargemode_config/pv_charging/switch_off_soc",e),e>=this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"]&&this.updateState("openWB/general/chargemode_config/pv_charging/switch_on_soc",e+5)}},watch:{controlMode(e){this.calculatedControlMode=e}}},V={class:"pvChargeConfig"},z={name:"pvChargeConfigForm"},E={key:0},k={key:1},C=r("hr",null,null,-1),y=r("br",null,null,-1),M=r("hr",null,null,-1),L=r("br",null,null,-1),U=r("hr",null,null,-1),q=r("br",null,null,-1),P=r("br",null,null,-1),$=r("br",null,null,-1),A={key:0},R={key:1},I={key:0},F={key:1},N=r("br",null,null,-1),D=r("br",null,null,-1),O=r("br",null,null,-1),Z=r("br",null,null,-1),T=r("br",null,null,-1),H=r("br",null,null,-1),G=r("hr",null,null,-1);function K(e,n,h,j,J,s){const p=g("openwb-base-alert"),m=g("openwb-base-button-group-input"),o=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("openwb-base-range-input"),v=g("openwb-base-heading"),b=g("openwb-base-submit-buttons");return d(),u("div",V,[r("form",z,[l(_,{title:"Regelparameter"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",E,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",k,[l(m,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"individual",text:"Individuell"}],modelValue:s.controlMode,"onUpdate:modelValue":n[0]||(n[0]=t=>s.controlMode=t)},{help:i(()=>[a(' Mit dieser Einstellung wird der angestrebte Regelbereich festgelegt. "Einspeisung" und "Bezug" definieren einen Bereich mit minimaler Einspeisung (-230W, 0W) bzw. minimalem Netzbezug (0W, 230W). Mit der Auswahl "individuell" kann ein eigener Regelbereich definiert werden. ')]),_:1},8,["modelValue"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Minimum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:i(()=>[a(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),l(o,{disabled:s.controlMode!=="individual",readonly:s.controlMode!=="individual",title:"Maximum",step:.01,unit:"kW","model-value":Array.isArray(e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:i(()=>[a("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),C,l(o,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet. ")]),_:1},8,["model-value"]),l(o,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:i(()=>[a(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),y,a(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),M,l(o,{title:"Abschaltschwelle",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:i(()=>[a(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. ")]),_:1},8,["model-value"]),l(o,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:i(()=>[a(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),L,a(" 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"]),U,l(o,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:i(()=>[a(" 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)."),q,a(' 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).'),P,a(' 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.'),$,a(" 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}),l(_,{title:"Phasenumschaltung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",A,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",R,[l(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:i(()=>[a(' 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 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"]==0?(d(),W(c,{key:0,title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phase_switch_delay"],"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/phase_switch_delay",t))},{help:i(()=>[a(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt. ")]),_:1},8,["model-value"])):B("v-if",!0)]))]),_:1}),l(_,{title:"Speicher-Beachtung"},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),u("div",I,[l(p,{subtype:"info"},{default:i(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),u("div",F,[l(m,{title:"Priorisierung",buttons:[{buttonValue:!1,text:"Fahrzeuge"},{buttonValue:!0,text:"Speicher"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_prio"],"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/bat_prio",t))},{help:i(()=>[a(' 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.'),N,D,a(' Bei Priorisierung "Fahrzeuge" wird die gesamte PV-Leistung ABZÜGLICH der "reservierten Ladeleistung" des Speichers zum Fahrzeugladen verwendet.'),O,Z,a(' Bei Priorisierung "Speicher" wird die gesamte PV-Leistung und ZUSÄTZLICH die "erlaubte Entladeleistung" des Speichers (bis zum Erreichen des "minimalen Entlade-SoC" des Speichers) zum Fahrzeugladen verwendet.'),T,H,a(" Beide Modi lassen sich mit den zusätzlichen Einstellungen an die eigenen Bedürfnisse anpassen, so dass auch ein Mischbetrieb möglich ist. ")]),_:1},8,["model-value"]),l(o,{title:"Reservierte Ladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/charging_power_reserve"]/1e3,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/charging_power_reserve",t*1e3))},{help:i(()=>[a(' Die "reservierte Ladeleistung" des Speichers wird von der Regelung auch bei "Fahrzeuge"-Vorrang NICHT für das Fahrzeugladen verwendet und bleibt immer dem Speicher vorbehalten. ')]),_:1},8,["model-value"]),l(o,{title:"Erlaubte Entladeleistung",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_power"]/1e3,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_power",t*1e3))},{help:i(()=>[a(' Die "erlaubte Entladeleistung" des Speichers wird von der Regelung bei "Speicher"-Vorrang ZUSÄTZLICH zur PV-Leistung für das Fahrzeugladen verwendet, solange der Speicher-SoC über dem "minimalen Entlade-SoC" liegt. ')]),_:1},8,["model-value"]),l(c,{title:"Minimaler Entlade-SoC",min:0,max:20,step:1,unit:"%",labels:[{label:0,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},{label:"Aus",value:100}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/rundown_soc"],"onUpdate:modelValue":n[13]||(n[13]=t=>e.updateState("openWB/general/chargemode_config/pv_charging/rundown_soc",t))},{help:i(()=>[a(" Ein vorhandener Speicher wird im Modus PV-Laden mit der erlaubten Entladeleistung höchstens bis zu dem hier eingestellten Ladestand entladen. ")]),_:1},8,["model-value"]),G,l(v,null,{default:i(()=>[a(" Laden mit Mindeststrom ")]),_:1}),l(c,{title:"Einschalt-SoC",min:0,max:18,step:1,unit:"%",labels:[{label:"Aus",value:0},{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":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_soc"],"onUpdate:modelValue":n[14]||(n[14]=t=>s.updateBatterySwitchOnSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"]),l(c,{title:"Ausschalt-SoC",min:0,max:18,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}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_soc"],"onUpdate:modelValue":n[15]||(n[15]=t=>s.updateBatterySwitchOffSoc(t))},{help:i(()=>[a('Ist der Speicher-SoC größer oder gleich dem "Einschalt-SoC", wird der Speicher im Modus "PV-Laden" bei aktiviertem Mindeststrom bis zum "Ausschalt-SoC" entladen, auch wenn KEIN Überschuss vorhanden ist. Der "Einschalt-SoC" muss größer oder gleich dem "Ausschalt-SoC" sein.')]),_:1},8,["model-value"])]))]),_:1}),l(b,{formName:"pvChargeConfigForm",onSave:n[16]||(n[16]=t=>e.$emit("save")),onReset:n[17]||(n[17]=t=>e.$emit("reset")),onDefaults:n[18]||(n[18]=t=>e.$emit("defaults"))})])])}const ae=w(S,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ae as default}; diff --git a/web/settings/assets/ScheduledChargeConfig-5a41484d.js b/web/settings/assets/ScheduledChargeConfig-1687d025.js similarity index 97% rename from web/settings/assets/ScheduledChargeConfig-5a41484d.js rename to web/settings/assets/ScheduledChargeConfig-1687d025.js index 8e98155baa..0f60099e48 100644 --- a/web/settings/assets/ScheduledChargeConfig-5a41484d.js +++ b/web/settings/assets/ScheduledChargeConfig-1687d025.js @@ -1 +1 @@ -import{C as g}from"./index-f08a7306.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; +import{C as g}from"./index-2a1b0c80.js";import{_ as h,p as o,k as a,l as i,q as c,A as s,L as r,u}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const _={name:"OpenwbScheduledChargeConfig",mixins:[g],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,k,B,V){const d=o("openwb-base-alert"),l=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return a(),i("div",b,[c("form",f,[s(m,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(d,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(l,{title:"Anzahl Phasen",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:r(()=>[u(' 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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(p,{formName:"scheduledChargeConfigForm",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 E=h(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default}; diff --git a/web/settings/assets/Status-954adcf7.js b/web/settings/assets/Status-60e959e3.js similarity index 99% rename from web/settings/assets/Status-954adcf7.js rename to web/settings/assets/Status-60e959e3.js index ed59831af4..6906394af2 100644 --- a/web/settings/assets/Status-954adcf7.js +++ b/web/settings/assets/Status-60e959e3.js @@ -1 +1 @@ -import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-838df0c9.js";import{C as Z}from"./index-f08a7306.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; +import{l as N,G as q,H as C,c as L,I as S,J as A,K as P,L as V,M as z,F as H}from"./vendor-fortawesome-838df0c9.js";import{C as Z}from"./index-2a1b0c80.js";import{_ as D,p as f,k as i,l as b,z as c,y as u,L as n,G as B,I as y,A as t,u as r,x as p,Q as M,R as E,q as v}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";N.add(q,C,L,S,A,P,V,z);const F={name:"OpenwbStatus",mixins:[Z],components:{FontAwesomeIcon:H},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"],statusLevel:["success","warning","danger"]}},computed:{installedChargePoints:{get(){return this.getWildcardTopics("openWB/chargepoint/+/config")}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,I){return Object.keys(e).filter(k=>e[k].type.includes(I)).reduce((k,w)=>({...k,[w]:e[w]}),{})},getChargePointIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getComponentIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])},getVehicleIndex(e){return parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1])}}},W=e=>(M("data-v-051028a3"),e=e(),E(),e),O={class:"status"},j=W(()=>v("br",null,null,-1)),G=W(()=>v("br",null,null,-1)),J=W(()=>v("br",null,null,-1)),R=W(()=>v("br",null,null,-1)),Q=W(()=>v("br",null,null,-1)),U=W(()=>v("br",null,null,-1)),X=W(()=>v("br",null,null,-1));function Y(e,I,k,w,x,o){const d=f("font-awesome-icon"),a=f("openwb-base-text-input"),m=f("openwb-base-heading"),g=f("openwb-base-card"),h=f("openwb-base-alert"),T=f("openwb-base-checkbox-input"),_=f("openwb-base-number-input");return i(),b("div",O,[c(" all charge points "),o.numChargePointsInstalled>1?(i(),u(g,{key:0,subtype:"primary",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" Alle Ladepunkte ")]),default:n(()=>[t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Historie")]),_:1}),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual charge points "),(i(!0),b(B,null,y(o.installedChargePoints,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"primary"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","charging-station"]}),r(" "+p(l.name)+" (ID: "+p(o.getChargePointIndex(s))+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),j,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(h,{subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),G,r(" "+p(e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/state_str"]),1)]),_:2},1024),t(T,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/plug_state"]==1},null,8,["model-value"]),t(T,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/charge_state"]==1},null,8,["model-value"]),t(a,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/current",2)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/frequency",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/power_factors",2)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Phasen")]),_:1}),t(a,{title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/set/phases_to_use")},null,8,["model-value"]),t(a,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+o.getChargePointIndex(s)+"/get/phases_in_use")},null,8,["model-value"])]),_:2},1024))),128)),c(" counters "),(i(!0),b(B,null,y(o.counterConfigs,l=>(i(),u(g,{key:l.id,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"danger"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),J,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]!=null?(i(),u(h,{key:0,subtype:"info"},{default:n(()=>[r(" Statusmeldung:"),R,r(" "+p(e.$store.state.mqtt["openWB/counter/"+l.id+"/get/state_str"]),1)]),_:2},1024)):c("v-if",!0),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(a,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+l.id+"/get/frequency",3)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Werte pro Phase")]),_:1}),t(a,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/voltages",1)},null,8,["model-value"]),t(a,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/currents",2)},null,8,["model-value"]),t(a,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+l.id+"/get/power_factors",2)},null,8,["model-value"])]),_:2},1032,["title"]))),128)),c(" all inverters "),o.numInvertersInstalled>1?(i(),u(g,{key:1,subtype:"success",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" Alle Wechselrichter ")]),default:n(()=>[t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Erträge")]),_:1}),t(a,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual inverters "),(i(!0),b(B,null,y(o.inverterConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),Q,r(" "+p(e.$store.state.mqtt["openWB/pv/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(a,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" all batteries "),o.numBatteriesInstalled>1?(i(),u(g,{key:2,subtype:"warning",collapsible:!0,collapsed:!0},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" Alle Speicher ")]),default:n(()=>[t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Tageswerte")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Saldierte Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})):c("v-if",!0),c(" individual batteries "),(i(!0),b(B,null,y(o.batteryConfigs,l=>(i(),u(g,{key:l.id,collapsible:!0,collapsed:!0,subtype:"warning"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+p(l.name)+" (ID: "+p(l.id)+") ",1)]),default:n(()=>[t(h,{subtype:x.statusLevel[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),U,r(" "+p(e.$store.state.mqtt["openWB/bat/"+l.id+"/get/fault_str"]),1)]),_:2},1032,["subtype"]),t(m,null,{default:n(()=>[r("Aktuelle Werte")]),_:1}),t(a,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+l.id+"/get/soc"]},null,8,["model-value"]),t(m,null,{default:n(()=>[r("Zählerstände")]),_:1}),t(a,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(a,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+l.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:2},1024))),128)),c(" vehicles "),(i(!0),b(B,null,y(o.vehicleNames,(l,s)=>(i(),u(g,{key:s,collapsible:!0,collapsed:!0,subtype:"info"},{header:n(()=>[t(d,{"fixed-width":"",icon:["fas","car"]}),r(" "+p(l)+" (ID: "+p(o.getVehicleIndex(s))+") ",1)]),default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]!==void 0?(i(),u(h,{key:0,subtype:x.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]]},{default:n(()=>[e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==1?(i(),u(d,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_state"]==2?(i(),u(d,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(i(),u(d,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),r(" Modulmeldung:"),X,r(" "+p(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/fault_str"]),1)]),_:2},1032,["subtype"])):c("v-if",!0),t(m,null,{default:n(()=>[r("Fahrzeugdaten")]),_:1}),t(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc"]},null,8,["model-value"]),t(_,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":Math.round(e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/range"])},null,8,["model-value"]),t(a,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":e.$store.state.mqtt["openWB/vehicle/"+o.getVehicleIndex(s)+"/get/soc_timestamp"]},null,8,["model-value"])]),_:2},1024))),128))])}const ne=D(F,[["render",Y],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{ne as default}; diff --git a/web/settings/assets/Support-bee6b474.js b/web/settings/assets/Support-0be69787.js similarity index 98% rename from web/settings/assets/Support-bee6b474.js rename to web/settings/assets/Support-0be69787.js index 317e020746..4e18709e57 100644 --- a/web/settings/assets/Support-bee6b474.js +++ b/web/settings/assets/Support-0be69787.js @@ -1 +1 @@ -import{l as w,g as y,F as V}from"./vendor-fortawesome-838df0c9.js";import{C as B}from"./index-f08a7306.js";import{_ as v,p as a,k as r,l as c,q as l,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=l("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=l("li",null," Stellen Sie 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),M=l("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=l("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),p=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return r(),c("div",C,[l("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[l("ul",null,[l("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[l("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; +import{l as w,g as y,F as V}from"./vendor-fortawesome-838df0c9.js";import{C as B}from"./index-2a1b0c80.js";import{_ as v,p as a,k as r,l as c,q as l,y as h,L as s,A as n,a2 as z,z as g,u as t,n as F}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";w.add(y);const x={name:"OpenwbSupport",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},q={name:"supportForm"},A={key:1},W={key:0},N=l("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Stable" Version installiert ist. ',-1),L=l("li",null," Stellen Sie 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),M=l("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),U=l("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten 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 ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),E={class:"row justify-content-center"};function G(d,o,T,H,e,_){const b=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),p=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return r(),c("div",C,[l("form",q,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(r(),h(u,{key:0,subtype:"danger"},{default:s(()=>[t(" Sie müssen der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(r(),c("div",A,[n(u,{subtype:"success"},{default:s(()=>[t(" Sie haben der "),n(b,{to:"/System/LegalSettings"},{default:s(()=>[t(" Datenschutzerklärung ")]),_:1}),t(" zugestimmt und können Systemberichte senden. ")]),_:1}),n(k,{title:"Systembericht"},z({default:s(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(r(),c("div",W,[n(u,{subtype:"info"},{default:s(()=>[l("ul",null,[l("li",null,[t(" Lesen Sie den Hilfetext, der durch Klick auf das "),n(f,{icon:["far","question-circle"]}),t(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),N,L,M,U])]),_:1}),n(p,{title:"E-Mail",required:"",subtype:"email",modelValue:e.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>e.sendDebugData.email=i)},null,8,["modelValue"]),n(p,{title:"openWB Seriennummer",required:"",modelValue:e.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>e.sendDebugData.serialNumber=i)},{help:s(()=>[t(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),n(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>e.sendDebugData.installedComponents=i)},{help:s(()=>[t(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),n(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:e.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>e.sendDebugData.vehicles=i)},{help:s(()=>[t(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),n(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:e.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>e.sendDebugData.message=i)},null,8,["modelValue"])])):g("v-if",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[l("div",E,[n(S,{class:F(["col-4",e.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!e.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:s(()=>[t(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),e.enableSendDebugButton?g("v-if",!0):(r(),h(u,{key:0,subtype:"success"},{default:s(()=>[t(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),n(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(x,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default}; diff --git a/web/settings/assets/System-c57d9a74.js b/web/settings/assets/System-62b8e5ff.js similarity index 98% rename from web/settings/assets/System-c57d9a74.js rename to web/settings/assets/System-62b8e5ff.js index 882bf9aa8e..97b74d225a 100644 --- a/web/settings/assets/System-c57d9a74.js +++ b/web/settings/assets/System-62b8e5ff.js @@ -1 +1 @@ -import{l as W,_ as S,p as q,$ as C,O as A,a0 as x,F as $}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-f08a7306.js";import{_ as U,p as c,k as g,l as y,A as s,L as o,q as a,z as k,u as d,n as v,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";W.add(S,q,C,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",m="master",w=[t,e,m],p=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==m?-1:i.value==m||l.value>i.value?1:l.value(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=f(()=>a("h2",null,"Achtung!",-1)),R=f(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=f(()=>a("br",null,null,-1)),se=f(()=>a("br",null,null,-1)),ne=f(()=>a("br",null,null,-1)),ae=f(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function le(t,e,m,w,p,r){const h=c("openwb-base-button-group-input"),u=c("openwb-base-alert"),l=c("openwb-base-text-input"),i=c("openwb-base-card"),b=c("font-awesome-icon"),_=c("openwb-base-click-button"),B=c("openwb-base-select-input");return g(),y("div",N,[s(u,{subtype:"danger"},{default:o(()=>[O,R,s(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),p.warningAcknowledged?(g(),y("div",Z,[a("form",G,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[s(_,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[d(" Informationen aktualisieren "),s(b,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[s(_,{class:v(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[d(" Update "),s(b,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:v(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(g(),z(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(g(!0),y(F,null,T(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(g(),y("li",{key:V},j(n),1))),128))])]),_:1})):k("v-if",!0),s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[s(_,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[d(" Neustart "),s(b,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[s(_,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[d(" Ausschalten "),s(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" 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})]),a("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[s(_,{class:v(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(u,{subtype:"warning"},{default:o(()=>[d(" 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."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' 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.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(B,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(B,{title:"Tag",options:r.getBranchTagOptions(),modelValue:p.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>p.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):k("v-if",!0)])}const be=U(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default}; +import{l as W,_ as S,p as q,$ as C,O as A,a0 as x,F as $}from"./vendor-fortawesome-838df0c9.js";import{C as E}from"./index-2a1b0c80.js";import{_ as U,p as c,k as g,l as y,A as s,L as o,q as a,z as k,u as d,n as v,y as z,G as F,I as T,x as j,Q as D,R as I}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";W.add(S,q,C,A,x);const L={name:"OpenwbSystem",mixins:[E],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch"],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||this.selectedTag=="*HEAD*")}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",m="master",w=[t,e,m],p=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==m?-1:i.value==m||l.value>i.value?1:l.value(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=f(()=>a("h2",null,"Achtung!",-1)),R=f(()=>a("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)),Z={key:0},G={name:"versionInfoForm"},H={class:"missing-commits"},P={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"},K={name:"powerForm"},M={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={name:"releaseChangeForm"},te=f(()=>a("br",null,null,-1)),se=f(()=>a("br",null,null,-1)),ne=f(()=>a("br",null,null,-1)),ae=f(()=>a("br",null,null,-1)),oe={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"};function le(t,e,m,w,p,r){const h=c("openwb-base-button-group-input"),u=c("openwb-base-alert"),l=c("openwb-base-text-input"),i=c("openwb-base-card"),b=c("font-awesome-icon"),_=c("openwb-base-click-button"),B=c("openwb-base-select-input");return g(),y("div",N,[s(u,{subtype:"danger"},{default:o(()=>[O,R,s(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1}),p.warningAcknowledged?(g(),y("div",Z,[a("form",G,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",P,[a("div",J,[s(_,{class:"btn-info",onButtonClicked:e[4]||(e[4]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:o(()=>[d(" Informationen aktualisieren "),s(b,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),a("div",Q,[s(_,{class:v(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[5]||(e[5]=n=>r.systemUpdate())},{default:o(()=>[d(" Update "),s(b,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:v(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(g(),z(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:o(()=>[a("ul",H,[(g(!0),y(F,null,T(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,V)=>(g(),y("li",{key:V},j(n),1))),128))])]),_:1})):k("v-if",!0),s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1})]),a("form",K,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",M,[a("div",X,[s(_,{class:"btn-warning",onButtonClicked:e[6]||(e[6]=n=>r.sendSystemCommand("systemReboot"))},{default:o(()=>[d(" Neustart "),s(b,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),a("div",Y,[s(_,{class:"btn-danger",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemShutdown"))},{default:o(()=>[d(" Ausschalten "),s(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" 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})]),a("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:o(()=>[a("div",oe,[a("div",re,[s(_,{class:v(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[10]||(e[10]=n=>r.switchBranch())},{default:o(()=>[s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(b,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:o(()=>[s(u,{subtype:"danger"},{default:o(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(u,{subtype:"warning"},{default:o(()=>[d(" 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."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' 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.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(B,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[8]||(e[8]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(B,{title:"Tag",options:r.getBranchTagOptions(),modelValue:p.selectedTag,"onUpdate:modelValue":e[9]||(e[9]=n=>p.selectedTag=n)},null,8,["options","modelValue"])]),_:1})])])):k("v-if",!0)])}const be=U(L,[["render",le],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default}; diff --git a/web/settings/assets/TestingStore-1048cc3b.js b/web/settings/assets/TestingStore-1f8762e3.js similarity index 99% rename from web/settings/assets/TestingStore-1048cc3b.js rename to web/settings/assets/TestingStore-1f8762e3.js index 1366880435..dac80b4fd6 100644 --- a/web/settings/assets/TestingStore-1048cc3b.js +++ b/web/settings/assets/TestingStore-1f8762e3.js @@ -1 +1 @@ -import{C as h}from"./index-f08a7306.js";import{S as y}from"./OpenwbSortableList-ac8ac331.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; +import{C as h}from"./index-2a1b0c80.js";import{S as y}from"./OpenwbSortableList-ac8ac331.js";import{_ as U,p as s,k as T,l as E,q as p,A as o,L as a,u as n,x as v,z as _}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const N={name:"OpenwbTestingStore",mixins:[h],components:{SortableList:y},data(){return{mqttTopicsToSubscribe:[]}}},k={class:"testingStore"},O={name:"testingStoreForm"},Z=p("hr",null,null,-1),j=p("hr",null,null,-1),L=p("hr",null,null,-1),J=p("hr",null,null,-1),D=p("hr",null,null,-1),z=p("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),p("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function B(e,t,G,R,A,C){const u=s("openwb-base-text-input"),d=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),x=s("openwb-base-array-input"),w=s("openwb-base-heading"),m=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return T(),E("div",k,[p("form",O,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(u,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(u,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(u,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(u,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(u,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(u,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(u,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),Z,o(d,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(d,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(u,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(f,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{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":e.$store.state.examples.range2,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),L,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{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"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["groups","model-value"]),J,o(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),D,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(u,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(u,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(d,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(x,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("tags",l))},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[z]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(m,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(m,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(m,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(m,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[_(" ToDo: Fix: nested lists bypass store commits! "),o($,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[21]||(t[21]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[p("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o(V,{formName:"testingStoreForm",onSave:t[22]||(t[22]=l=>e.$emit("save")),onReset:t[23]||(t[23]=l=>e.$emit("reset")),onDefaults:t[24]||(t[24]=l=>e.$emit("defaults"))})])])}const Q=U(N,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{Q as default}; diff --git a/web/settings/assets/TimeChargeConfig-3a55662f.js b/web/settings/assets/TimeChargeConfig-551a0160.js similarity index 96% rename from web/settings/assets/TimeChargeConfig-3a55662f.js rename to web/settings/assets/TimeChargeConfig-551a0160.js index ba5e6ad509..70d27b1205 100644 --- a/web/settings/assets/TimeChargeConfig-3a55662f.js +++ b/web/settings/assets/TimeChargeConfig-551a0160.js @@ -1 +1 @@ -import{C as l}from"./index-f08a7306.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; +import{C as l}from"./index-2a1b0c80.js";import{_,p as o,k as a,l as i,q as b,A as s,L as r,u as m}from"./vendor-20bb207d.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const h={name:"OpenwbTimeChargeConfig",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},C={key:1};function w(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 a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",C,[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(()=>[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 (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"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 N=_(h,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{N as default}; diff --git a/web/settings/assets/VehicleConfig-2663db55.js b/web/settings/assets/VehicleConfig-939fd0ba.js similarity index 99% rename from web/settings/assets/VehicleConfig-2663db55.js rename to web/settings/assets/VehicleConfig-939fd0ba.js index dcdffee0df..0e579569dd 100644 --- a/web/settings/assets/VehicleConfig-2663db55.js +++ b/web/settings/assets/VehicleConfig-939fd0ba.js @@ -1 +1 @@ -import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-838df0c9.js";import{_ as S,C as ie}from"./index-f08a7306.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-11ffdccd.js"),["assets/vehicle-11ffdccd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-82a4990a.js"),["assets/vehicle-82a4990a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-344c6660.js"),["assets/vehicle-344c6660.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0ea9ae58.js"),["assets/vehicle-0ea9ae58.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-0e30b50e.js"),["assets/vehicle-0e30b50e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-ebf7e590.js"),["assets/vehicle-ebf7e590.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-8cbf750d.js"),["assets/vehicle-8cbf750d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-34ce6cc8.js"),["assets/vehicle-34ce6cc8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-c74f02d0.js"),["assets/vehicle-c74f02d0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-ef079f93.js"),["assets/vehicle-ef079f93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-cbd74ad8.js"),["assets/vehicle-cbd74ad8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-e7320818.js"),["assets/vehicle-e7320818.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-13ef03ae.js","assets/index-f08a7306.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-677f2094.js"),["assets/vehicle-677f2094.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; +import{l as $,d as H,S as j,A as J,T as G,U as Q,z as X,K as Y,X as K,I as ee,V as te,Y as ae,F as ne,W as le}from"./vendor-fortawesome-838df0c9.js";import{_ as S,C as ie}from"./index-2a1b0c80.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as D,p as V,k as r,l as g,A as a,L as n,u as l,x as k,q as c,a0 as de,y as b,a1 as re,z as s,G as B,I as A,a2 as M,n as I,Q as ue,R as se}from"./vendor-20bb207d.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";import"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";const me={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},ce={class:"vehicle-fallback"};function he(e,o,p,E,v,m){const W=V("openwb-base-alert"),f=V("openwb-base-textarea");return r(),g("div",ce,[a(W,{subtype:"warning"},{default:n(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+k(p.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":p.configuration,"onUpdate:modelValue":o[0]||(o[0]=z=>m.updateConfiguration(z,"configuration"))},{help:n(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:n(()=>[c("pre",null,k(JSON.stringify(p.configuration,void 0,2)),1)]),_:1})])}const ge=D(me,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),pe={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicleType:{type:String,required:!0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicleType}`),de({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-11ffdccd.js"),["assets/vehicle-11ffdccd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-82a4990a.js"),["assets/vehicle-82a4990a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-344c6660.js"),["assets/vehicle-344c6660.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-0ea9ae58.js"),["assets/vehicle-0ea9ae58.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-0e30b50e.js"),["assets/vehicle-0e30b50e.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-ebf7e590.js"),["assets/vehicle-ebf7e590.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-8cbf750d.js"),["assets/vehicle-8cbf750d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-34ce6cc8.js"),["assets/vehicle-34ce6cc8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-c74f02d0.js"),["assets/vehicle-c74f02d0.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-ef079f93.js"),["assets/vehicle-ef079f93.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-cbd74ad8.js"),["assets/vehicle-cbd74ad8.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-1c4a57cd.js"),["assets/vehicle-1c4a57cd.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-axios-13ef03ae.js","assets/index-2a1b0c80.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/index-27f04b3e.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-677f2094.js"),["assets/vehicle-677f2094.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css"])}),`./${this.vehicleType}/vehicle.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,p,E,v,m){return r(),b(re(m.myComponent),{configuration:p.configuration,vehicleId:p.vehicleId,vehicleType:p.vehicleType,"onUpdate:configuration":o[0]||(o[0]=W=>m.updateConfiguration(W))},null,40,["configuration","vehicleId","vehicleType"])}const be=D(pe,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ae);const ve={name:"OpenwbVehicleConfig",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:le,OpenwbVehicleProxy:be},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","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/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/config","openWB/vehicle/+/soc_module/interval_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:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+p].name;e.push({value:p,text:E})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let p=parseInt(o.match(/([0-9]+)$/g)[0]),E=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+p].name;e.push({value:p,text:E})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...o.defaults}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:p}})},removeChargeTemplateSchedulePlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,p){this.showChargeTemplateSchedulePlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let p=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:p}})},removeChargeTemplateTimeChargingPlanModal(e,o,p){p.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,p){this.showChargeTemplateTimeChargingPlanModal=!1,p=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},w=e=>(ue("data-v-d7193cf0"),e=e(),se(),e),_e={class:"vehicleConfig"},we={name:"vehicleConfigForm"},Ve={key:0},ke={key:1},Ce=w(()=>c("hr",null,null,-1)),Se={key:0},ze=w(()=>c("br",null,null,-1)),Te=["innerHTML"],Ue=w(()=>c("hr",null,null,-1)),Pe=w(()=>c("br",null,null,-1)),We=w(()=>c("br",null,null,-1)),ye=w(()=>c("br",null,null,-1)),Le={key:1},Be={key:0},Ae=w(()=>c("hr",{class:"border-secondary"},null,-1)),Ee={key:0},qe={key:1},Me={key:0},Fe={key:1},xe=w(()=>c("br",null,null,-1)),De=w(()=>c("br",null,null,-1)),Ze=w(()=>c("ol",null,[c("li",null," Zielladen (Sofortladen) mit Priorität "),c("li",null,"Zielladen (Sofortladen)"),c("li",null,"Zeitladen mit Priorität"),c("li",null,"Zeitladen"),c("li",null,"Sofortladen mit Priorität"),c("li",null,"Sofortladen"),c("li",null,"PV (Min-Anteil) mit Priorität"),c("li",null,"PV (Min-Anteil)"),c("li",null,"Zielladen (PV) mit Priorität"),c("li",null,"Zielladen (PV)"),c("li",null,"PV (PV-Anteil) mit Priorität"),c("li",null,"PV (PV-Anteil)")],-1)),Ie=w(()=>c("hr",null,null,-1)),Ne=w(()=>c("hr",null,null,-1)),Oe=w(()=>c("br",null,null,-1)),Re=w(()=>c("br",null,null,-1)),$e=w(()=>c("hr",null,null,-1)),He=w(()=>c("br",null,null,-1)),je=w(()=>c("br",null,null,-1)),Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:4},et=w(()=>c("hr",null,null,-1)),tt={key:0},at={key:1},nt={key:2},lt={key:3},it={key:4},ot={key:4};function dt(e,o,p,E,v,m){const W=V("openwb-base-modal-dialog"),f=V("font-awesome-icon"),z=V("openwb-base-avatar"),q=V("openwb-base-alert"),T=V("openwb-base-text-input"),F=V("openwb-base-select-input"),N=V("openwb-base-array-input"),O=V("openwb-vehicle-proxy"),y=V("openwb-base-heading"),U=V("openwb-base-number-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-card"),Z=V("font-awesome-layers"),C=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return r(),g(B,null,[s(" modal dialogs "),a(W,{show:v.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>m.removeVehicle(v.modalVehicleIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug "'+k(m.getVehicleName(v.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>m.removeEvTemplate(v.modalEvTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+k(m.getEvTemplateName(v.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>m.removeChargeTemplate(v.modalChargeTemplateIndex,i))},{default:n(()=>[l(' Wollen Sie das Lade-Profil "'+k(m.getChargeTemplateName(v.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>m.removeChargeTemplateSchedulePlan(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+k(m.getChargeTemplateSchedulePlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:v.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>m.removeChargeTemplateTimeChargingPlan(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex,i))},{default:n(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+k(m.getChargeTemplateTimeChargingPlanName(v.modalChargeTemplateIndex,v.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),s(" main content "),c("div",_e,[c("form",we,[s(" vehicle card "),a(L,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:n(()=>[a(f,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ve,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",ke,[(r(!0),g(B,null,A(m.vehicleIndexes,i=>(r(),b(L,{key:i,title:m.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},M({_:2},[i===0?{name:"help",fn:n(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(q,{subtype:"info"},{default:n(()=>[l(" 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(F,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),a(F,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),Ce,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(r(),g("div",Se,[a(N,{title:"Zugeordnete Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),a(q,{subtype:"info"},{default:n(()=>[l(" Der/die RFID-Tag(s) müssen in dem Ladepunkt-Profil eingetragen werden, um zuzuordnen, an welchem Ladepunkt die Tags verwendet werden dürfen."),ze,c("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Te)]),_:1}),Ue])):s("v-if",!0),a(F,{class:"mb-2",title:"SoC-Modul",options:m.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>m.updateSelectedSocModule(i,d)},{help:n(()=>[l(" 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)."),Pe,l(" 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."),We,l(" 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."),ye,l(" 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"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),g("div",Le,[a(O,{vehicleId:i,vehicleType:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,configuration:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].configuration,"onUpdate:configuration":d=>m.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicleType","configuration","onUpdate:configuration"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"]?(r(),g("div",Be,[a(y,null,{help:n(()=>[l(" 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:n(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),a(U,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_charging")},{help:n(()=>[l(" 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(U,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_interval_not_charging,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_interval_not_charging")},{help:n(()=>[l(" 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":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/interval_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/interval_config",d,"request_only_plugged")},{help:n(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("v-if",!0)])):s("v-if",!0)]),_:2},[i!==0?{name:"actions",fn:n(d=>[d.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:t=>m.removeVehicleModal(i,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ae,a(y,null,{default:n(()=>[l("Profile")]),_:1}),s(" vehicle template card "),a(L,{collapsible:!0,collapsed:!0},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Ee,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",qe,[a(q,{subtype:"info"},{default:n(()=>[l(" 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}),(r(!0),g(B,null,A(m.evTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" Angaben zum Ladestrom ")]),_:1}),a(C,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:n(()=>[l(" 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(y,null,{default:n(()=>[l(" Angaben zur Batterie ")]),_:1}),a(U,{title:"Kapazität der Batterie",unit:"kWh",min:10,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:n(()=>[l(" 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"]),a(U,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),a(y,null,{default:n(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:n(()=>[l(" 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":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:n(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(U,{key:0,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:n(()=>[l(' 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":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:n(()=>[l(" In den Lademodi PV- und Zielladen wird die Abschaltverzögerung ausgesetzt und nach Ladebeginn der Ladevorgang nicht unterbrochen. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach Unterbrechen der Ladung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),a(U,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),a(U,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:n(()=>[l(" 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},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeEvTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),s(" charge template card "),a(L,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:n(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:n(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(z,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("v-if",!0)]),default:n(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),g("div",Me,[a(q,{subtype:"info"},{default:n(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),g("div",Fe,[(r(!0),g(B,null,A(m.chargeTemplates,(i,d)=>(r(),b(L,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==m.getChargeTemplateIndex(d))},M({default:n(()=>[a(T,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},M({_:2},[d.endsWith("/0")?{name:"help",fn:n(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),a(y,null,{default:n(()=>[l(" 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":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:n(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),xe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),De,Ze]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:n(()=>[l(" 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":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:n(()=>[l(' 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:"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":t=>e.updateState(d,t,"disable_after_unplug")},{help:n(()=>[l(" Wird ein Fahrzeug mit diesem Profil abgesteckt, dann wird der betroffene Ladepunkt automatisch deaktiviert. ")]),_: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":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:n(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Ladeprofil zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ie,a(y,null,{default:n(()=>[l("Sofortladen")]),_:1}),a(C,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:n(()=>[l(" 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(C,{title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:n(()=>[l(' 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(U,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:n(()=>[l(" 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"]),Ne,a(y,null,{default:n(()=>[l("PV-Laden")]),_:1}),a(C,{title:"Mindeststrom",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":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:n(()=>[l(' Hier kann ein Mindeststrom 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,["model-value","onUpdate:modelValue"]),a(C,{title:"SoC-Limit",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":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:n(()=>[l(' 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.'),Oe,l(' 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(C,{title:"Mindest-SoC",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":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:n(()=>[l(' 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.'),Re,l(' 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(C,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:n(()=>[l(' 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:n(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),$e,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateSchedulePlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(' 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.'),He,l(' 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" erreicht wird.'),je,l(" 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:n(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateScheduledChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",Je,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc_scheduled)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",Ge,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time)+" ",1),t.frequency.selected=="once"?(r(),g("span",Qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once)),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",Xe,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",Ye,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateSchedulePlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(h,u,"time")},{help:n(()=>[l(" 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(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},{help:n(()=>[l(" 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,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_scheduled")},{help:n(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="soc"?(r(),b(C,{key:1,title:"SoC-Limit",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc_limit")},{help:n(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",Ke,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128)),et,a(y,null,{actions:n(()=>[a(z,{class:"bg-success clickable",onClick:t=>m.addChargeTemplateTimeChargingPlan(d,t)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:n(()=>[l(" 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:n(()=>[l(" Laden nach Zeitplan ")]),_:2},1024),(r(!0),g(B,null,A(m.getChargeTemplateTimeChargingPlans(d),(t,h)=>(r(),b(L,{key:h,title:t.name,collapsible:!0,collapsed:!0},{actions:n(u=>[u.collapsed==!0?(r(),g("span",{key:0,class:I(["subheader pill",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),g("span",tt,[a(f,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+k(t.limit.soc)+"% ",1)])):s("v-if",!0),t.limit.selected=="amount"?(r(),g("span",at,[a(f,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+k(t.limit.amount/1e3)+"kWh ",1)])):s("v-if",!0),a(f,{"fixed-width":"",icon:["fas","clock"]}),l(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),g("span",nt,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):s("v-if",!0),t.frequency.selected=="daily"?(r(),g("span",lt,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("span",it,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("v-if",!0)],2)):s("v-if",!0),u.collapsed==!1?(r(),b(z,{key:1,class:"bg-danger clickable",onClick:P=>m.removeChargeTemplateTimeChargingPlanModal(d,h,P)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("v-if",!0)]),default:n(()=>[a(T,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(h,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":t.active,"onUpdate:modelValue":u=>e.updateState(h,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(h,u,"current")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.selected")},{help:n(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(C,{key:0,title:"Ziel-SoC",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(h,u,"limit.soc")},{help:n(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.limit.selected=="amount"?(r(),b(U,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(h,u*1e3,"limit.amount")},{help:n(()=>[l(" 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"])):s("v-if",!0),a(T,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(h,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(T,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(h,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":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(T,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="once"?(r(),b(T,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(h,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("v-if",!0),t.frequency.selected=="weekly"?(r(),g("div",ot,[(r(!0),g(B,null,A(e.weekdays,(u,P)=>(r(),b(_,{key:P,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[P],"onUpdate:modelValue":x=>e.updateState(h,x,"frequency.weekly."+P)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("v-if",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:n(t=>[t.collapsed?s("v-if",!0):(r(),b(z,{key:0,class:"bg-danger clickable",onClick:h=>m.removeChargeTemplateModal(d,h)},{default:n(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const ft=D(ve,[["render",dt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{ft as default}; diff --git a/web/settings/assets/index-f08a7306.js b/web/settings/assets/index-2a1b0c80.js similarity index 96% rename from web/settings/assets/index-f08a7306.js rename to web/settings/assets/index-2a1b0c80.js index aedaebc326..45d620c83a 100644 --- a/web/settings/assets/index-f08a7306.js +++ b/web/settings/assets/index-2a1b0c80.js @@ -1 +1 @@ -import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-20bb207d.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import{p as Ae,a as qe}from"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-jquery-89b63fca.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};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 o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-954adcf7.js"),["assets/Status-954adcf7.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-0999e18c.js"),["assets/ChargeLog-0999e18c.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-73a93152.js"),["assets/Chart-73a93152.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-93103a11.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-f5ba108a.js"),["assets/GeneralConfig-f5ba108a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-4617e1d7.js"),["assets/OptionalComponents-4617e1d7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-48509d36.js"),["assets/GeneralChargeConfig-48509d36.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-30b13a1a.js"),["assets/InstantChargeConfig-30b13a1a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-7b09b63a.js"),["assets/PVChargeConfig-7b09b63a.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-3a55662f.js"),["assets/TimeChargeConfig-3a55662f.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-5a41484d.js"),["assets/ScheduledChargeConfig-5a41484d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-02a629c9.js"),["assets/HardwareInstallation-02a629c9.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-ca6e28c3.js"),["assets/LoadManagementConfig-ca6e28c3.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-ac8ac331.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-0b5b847e.js"),["assets/ChargePointInstallation-0b5b847e.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-2663db55.js"),["assets/VehicleConfig-2663db55.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-4d98a70d.js"),["assets/CloudConfig-4d98a70d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-5474c1b1.js"),["assets/MqttBridgeConfig-5474c1b1.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8fb43a78.js"),["assets/DebugConfig-8fb43a78.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-bee6b474.js"),["assets/Support-bee6b474.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f8ef4166.js"),["assets/LegalSettings-f8ef4166.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-c57d9a74.js"),["assets/System-c57d9a74.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f38afa86.js"),["assets/DataManagement-f38afa86.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-1048cc3b.js"),["assets/TestingStore-1048cc3b.js","assets/OpenwbSortableList-ac8ac331.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; +import{_ as b,k as r,l as d,m as w,n as k,p as h,q as n,u as p,x as _,y as v,z as u,A as m,B as C,D as $,E as S,F as K,G as x,I as M,J as Q,K as Y,L as f,M as Z,N as X,T as ee,O as te,P as W,Q as A,R as q,S as se,U as oe,V as ne,W as ae,X as ie,Y as le,Z as re}from"./vendor-20bb207d.js";import{l as B,f as I,a as V,b as de,c as ce,d as ue,e as pe,F as O,g as E,h as me,i as fe,j as _e,k as he,m as ge,n as be,o as ve,p as we,q as ye,r as ke,s as Se,t as Ce,u as Be,v as Oe,w as $e,x as Te,y as xe,z as Ie,A as Ve,B as Pe,C as He,D as Me,E as De}from"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import{p as Ae,a as qe}from"./vendor-axios-13ef03ae.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-jquery-89b63fca.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"]'))c(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function o(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 c(l){if(l.ep)return;l.ep=!0;const s=o(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Le(e,t,o,c,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+o.subtype])},[w(e.$slots,"default")],2)}const je=b(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));B.add(I,V,de,ce,ue,pe);const Re={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,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.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Ne={class:"form-row mb-1"},Ue={class:"col-md-8"},ze={class:"form-row"},Fe={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ne,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ue,[n("div",ze,[n("div",Fe,[n("div",Ge,[n("div",Je,[m(a,{"fixed-width":"",icon:["fas","tag"]})])]),C(n("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>l.newTag=i)},e.$attrs,{onKeyup:t[2]||(t[2]=K((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[$,l.newTag]]),n("div",Ke,[n("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...i)=>s.addTag&&s.addTag(...i))},[m(a,{"fixed-width":"",icon:["fas","plus"]})],2)])])]),n("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+_(o.noElementsMessage),1)])):u("v-if",!0),(r(!0),d(x,null,M(s.value,(i,g)=>(r(),d("span",{class:"tag",key:g},[m(a,{icon:["fas","tag"]}),p(" "+_(i)+" ",1),m(a,{class:"clickable",icon:["fas","times-circle"],onClick:T=>s.removeTag(g)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const et=b(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},ot={class:"avatar"};function nt(e,t,o,c,l,s){return r(),d("div",ot,[w(e.$slots,"default",{},()=>[p("?")],!0)])}const at=b(st,[["render",nt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const lt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ct={class:"form-row"},ut={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",rt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",dt,[n("div",ct,[n("div",ut,[(r(!0),d(x,null,M(o.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[C(n("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=g=>s.value=g),value:i.buttonValue},e.$attrs),null,16,pt),[[Q,s.value]]),p(" "+_(i.text)+" ",1),m(a,{icon:["fas","check"],style:Y([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[w(e.$slots,"help")])):u("v-if",!0)])])}const _t=b(lt,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:_t},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const gt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,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"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},wt={class:"form-row"},yt={key:0,class:"form-row alert alert-info my-1 small"};function kt(e,t,o,c,l,s){const a=h("font-awesome-icon"),i=h("openwb-base-click-button");return r(),d("div",bt,[n("label",{onClick:t[0]||(t[0]=(...g)=>s.toggleHelp&&s.toggleHelp(...g)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vt,[n("div",wt,[m(i,S({class:(o.disabled?"btn-outline-":"btn-")+o.subtype,disabled:o.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[w(e.$slots,"default",{},()=>[p(_(o.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",yt,[w(e.$slots,"help")])):u("v-if",!0)])])}const St=b(gt,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Ct=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));B.add(me,fe);const Bt={name:"OpenwbCard",components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},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)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},Tt={class:"col"},xt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:0,class:"card-body"},Pt={key:1,class:"card-footer"};function Ht(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+o.subtype])},[n("div",{class:k(["card-header py-1","bg-"+o.subtype]),onClick:t[0]||(t[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[n("div",Ot,[n("div",$t,[n("div",Tt,[w(e.$slots,"header",{collapsed:l.isCollapsed},()=>[p(_(o.title),1)])])])]),n("span",xt,[e.$slots.actions?(r(),d("span",It,[w(e.$slots,"actions",{collapsed:l.isCollapsed})])):u("v-if",!0),o.collapsible?(r(),v(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("v-if",!0)])],2),l.isCollapsed===!1?(r(),d("div",Vt,[w(e.$slots,"default")])):u("v-if",!0),e.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Pt,[w(e.$slots,"footer")])):u("v-if",!0)],2)}const Mt=b(Bt,[["render",Ht],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Dt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const At={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},qt={class:"form-row mb-1"},Et={class:"col-md-8"},Lt={class:"form-row"},jt={key:0,class:"form-row alert alert-info my-1 small"};function Wt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",qt,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Et,[n("div",Lt,[C(n("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[Z,s.value]])]),l.showHelp?(r(),d("span",jt,[w(e.$slots,"help")])):u("v-if",!0)])])}const Rt=b(At,[["render",Wt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Nt=Object.freeze(Object.defineProperty({__proto__:null,default:Rt},Symbol.toStringTag,{value:"Module"}));const Ut={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function zt(e,t,o,c,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=X((...a)=>s.click&&s.click(...a),["prevent"]))},[w(e.$slots,"default",{},()=>[p(_(o.title),1)],!0)])}const Ft=b(Ut,[["render",zt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ft},Symbol.toStringTag,{value:"Module"}));B.add(_e,he);const Jt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),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 select"),window.getSelection){console.debug("using '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){console.debug("using '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")}}}},Kt=["title"];function Qt(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:o.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...i)=>s.click&&s.click(...i))},[w(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Kt)}const Yt=b(Jt,[["render",Qt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Zt=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));B.add(I,V,E);const Xt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},es={class:"card-text card-text-heading"},ts={key:0,class:"actions"},ss={class:""},os={key:0,class:"form-row alert alert-info small"};function ns(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d(x,null,[n("div",es,[n("div",{class:"heading-text",onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[w(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),e.$slots.actions?(r(),d("span",ts,[w(e.$slots,"actions",{},void 0,!0)])):u("v-if",!0)]),n("div",ss,[l.showHelp?(r(),d("span",os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])],64)}const as=b(Xt,[["render",ns],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),is=Object.freeze(Object.defineProperty({__proto__:null,default:as},Symbol.toStringTag,{value:"Module"})),ls={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,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}},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)}}},rs=n("div",{class:"modal-backdrop fade show"},null,-1),ds={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},cs={class:"modal-content"},us={class:"modal-title"},ps={class:"modal-body"},ms=["data-event"];function fs(e,t,o,c,l,s){return o.show?(r(),v(ee,{key:0,to:"body"},[rs,n("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[n("div",ds,[n("div",cs,[u(" modal header "),n("div",{class:k(["modal-header","bg-"+o.subtype])},[n("h4",us,_(o.title),1),o.preventClose?u("v-if",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),u(" modal body "),n("div",ps,[w(e.$slots,"default",{},()=>[p("# Body #")])]),u(" modal footer "),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+o.footerAlignment])},[(r(!0),d(x,null,M(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...i)=>s.handleClick&&s.handleClick(...i))},_(a.text),11,ms))),128))],2)):u("v-if",!0)])])])])):u("v-if",!0)}const _s=b(ls,[["render",fs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),hs=Object.freeze(Object.defineProperty({__proto__:null,default:_s},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ge);const gs={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},bs={class:"form-row mb-1"},vs={class:"col-md-8"},ws={class:"form-row"},ys={class:"input-group"},ks={class:"input-group-prepend"},Ss={class:"input-group-text"},Cs={key:0,class:"input-group-append"},Bs={class:"input-group-text"},Os={key:0,class:"form-row alert alert-info my-1 small"};function $s(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",bs,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",vs,[n("div",ws,[n("div",ys,[n("div",ks,[n("div",Ss,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(n("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16),[[$,s.value,void 0,{number:!0}]]),o.unit?(r(),d("div",Cs,[n("div",Bs,_(o.unit),1)])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Os,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const Ts=b(gs,[["render",$s],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),xs=Object.freeze(Object.defineProperty({__proto__:null,default:Ts},Symbol.toStringTag,{value:"Module"}));B.add(I,V,be,ve);const Is={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValues.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ps,[n("div",Hs,[s.label?(r(),d("label",Ms,_(s.label),1)):u("v-if",!0),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),n("div",Ds,[C(n("input",S({type:"range",class:"form-control-range rangeInput",min:o.min,max:o.max,step:o.step,"onUpdate:modelValue":t[2]||(t[2]=i=>s.sliderValue=i)},e.$attrs),null,16,As),[[$,s.sliderValue,void 0,{number:!0}]])]),n("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[n("div",Es,[w(e.$slots,"help",{},void 0,!0)])])):u("v-if",!0)])])}const js=b(Is,[["render",Ls],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Rs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Ns={class:"form-row mb-1"},Us={class:"col-md-8"},zs={class:"form-row"},Fs={key:0,value:void 0,disabled:""},Gs=["value"],Js=["label"],Ks=["value"],Qs={key:0,class:"form-row alert alert-info my-1 small"};function Ys(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Ns,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Us,[n("div",zs,[C(n("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),[o.notSelected!==void 0?(r(),d("option",Fs," -- "+_(o.notSelected)+" -- ",1)):u("v-if",!0),u(" select elements without option groups "),(r(!0),d(x,null,M(o.options,i=>(r(),d("option",{key:i.value,value:i.value},_(i.text),9,Gs))),128)),u(" option groups with options "),(r(!0),d(x,null,M(o.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(x,null,M(i.options,g=>(r(),d("option",{key:g.value,value:g.value},_(g.text),9,Ks))),128))],8,Js))),128))],16),[[te,s.value]]),w(e.$slots,"append")]),l.showHelp?(r(),d("span",Qs,[w(e.$slots,"help")])):u("v-if",!0)])])}const Zs=b(Rs,[["render",Ys],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Xs=Object.freeze(Object.defineProperty({__proto__:null,default:Zs},Symbol.toStringTag,{value:"Module"}));B.add(E,we,ye);const eo={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalSave:!1,showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],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.showModalSave=!0,this.$emit("save"),window.setTimeout(()=>this.showModalSave=!1,3e3)}}},to={class:"row justify-content-center mb-1"},so={class:"col-md-4 d-flex py-1 justify-content-center"},oo={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},no={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function ao(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog"),i=h("font-awesome-icon");return r(),d(x,null,[m(a,{show:l.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),n("div",to,[n("div",so,[n("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...g)=>s.saveSettings&&s.saveSettings(...g))},[p(" Speichern "),m(i,{"fixed-width":"",icon:["fas","check"]})])]),o.hideReset?u("v-if",!0):(r(),d("div",oo,[n("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...g)=>s.showResetModal&&s.showResetModal(...g))},[p(" Änderungen verwerfen "),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),o.hideDefaults?u("v-if",!0):(r(),d("div",no,[n("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...g)=>s.showDefaultsModal&&s.showDefaultsModal(...g))},[p(" Werkseinstellungen "),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const io=b(eo,[["render",ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),lo=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));B.add(I,V,ke,Se,Ce,Be,Oe,$e,Te,xe,Ie,Ve,Pe,He);const ro={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,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{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,o,c=new Date(this.modelValue);switch(this.subtype){case"date":c.setDate(c.getDate()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0")+"-"+String(c.getDate()).padStart(2,"0"),t=this.$refs.dateInput;break;case"month":c.setMonth(c.getMonth()+e),o=String(c.getFullYear())+"-"+String(c.getMonth()+1).padStart(2,"0"),t=this.$refs.monthInput;break;case"year":c.setYear(c.getFullYear()+e),o=String(c.getFullYear()),t=this.$refs.yearInput;break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}o>t.max||o(A("data-v-6927d479"),e=e(),q(),e),co={class:"form-row mb-1"},uo={class:"col-md-8"},po={class:"form-row"},mo={class:"input-group"},fo={class:"input-group-prepend"},_o={class:"input-group-text"},ho=["pattern"],go=["pattern"],bo=["type","pattern"],vo=["type"],wo={class:"input-group-text"},yo={key:10,class:"input-group-append"},ko={class:"input-group-text"},So=N(()=>n("div",{class:"input-group-text"},"-",-1)),Co=[So],Bo=N(()=>n("div",{class:"input-group-text"},"+",-1)),Oo=[Bo],$o={key:0,class:"form-row alert alert-info my-1 small"};function To(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",co,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",uo,[n("div",po,[n("div",mo,[n("div",fo,[n("div",_o,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="email"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("v-if",!0),o.subtype=="host"?(r(),v(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("v-if",!0),o.subtype=="url"?(r(),v(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("v-if",!0),o.subtype=="user"?(r(),v(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0),o.subtype=="password"?(r(),v(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("v-if",!0),o.subtype=="time"?(r(),v(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("v-if",!0),o.subtype=="date"||o.subtype=="month"||o.subtype=="year"?(r(),v(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("v-if",!0)])]),["text","user"].includes(o.subtype)?C((r(),d("input",S({key:0,type:"text",class:["form-control",{invalid:l.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,ho)),[[$,s.value]]):u("v-if",!0),o.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,go)),[[$,s.value]]):u("v-if",!0),o.subtype=="password"?C((r(),d("input",S({key:2,type:l.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=i=>s.value=i)},e.$attrs,{pattern:o.pattern}),null,16,bo)),[[W,s.value]]):u("v-if",!0),o.subtype=="host"?C((r(),d("input",S({key:3,type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),["email","url"].includes(o.subtype)?C((r(),d("input",S({key:4,type:o.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=i=>s.value=i)},e.$attrs),null,16,vo)),[[W,s.value]]):u("v-if",!0),o.subtype=="password"?(r(),d("div",{key:5,class:"input-group-append clickable",onClick:t[6]||(t[6]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[n("div",wo,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("v-if",!0),o.subtype=="time"?C((r(),d("input",S({key:6,type:"time",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="date"?C((r(),d("input",S({key:7,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="month"?C((r(),d("input",S({key:8,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.subtype=="year"?C((r(),d("input",S({key:9,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]):u("v-if",!0),o.unit?(r(),d("div",yo,[n("div",ko,_(o.unit),1)])):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=i=>s.modify(-1))},Co)):u("v-if",!0),o.showQuickButtons&&(o.subtype=="date"||o.subtype=="month"||o.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=i=>s.modify(1))},Oo)):u("v-if",!0)])]),l.showHelp?(r(),d("span",$o,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const xo=b(ro,[["render",To],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Io=Object.freeze(Object.defineProperty({__proto__:null,default:xo},Symbol.toStringTag,{value:"Module"}));B.add(I,V);const Vo={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid 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{console.warn("parsing JSON failed: "+e),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}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Po={class:"form-row mb-1"},Ho={class:"col-md-8"},Mo={class:"form-row"},Do={class:"input-group"},Ao={class:"input-group-prepend"},qo={class:"input-group-text"},Eo={key:2,class:"input-group-append"},Lo={class:"input-group-text"},jo={class:"form-text text-muted text-right"},Wo={key:0,class:"form-row alert alert-info my-1 small"};function Ro(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",Po,[n("label",{onClick:t[0]||(t[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i)),class:"col-md-4 col-form-label"},[p(_(o.title)+" ",1),e.$slots.help?(r(),v(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):u("v-if",!0)]),n("div",Ho,[n("div",Mo,[n("div",Do,[n("div",Ao,[n("div",qo,[o.subtype=="text"?(r(),v(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("v-if",!0),o.subtype=="json"?(r(),v(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("v-if",!0)])]),o.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=i=>s.value=i)},e.$attrs),null,16)),[[$,s.value]]),e.$attrs.maxlength?(r(),d("div",Eo,[n("div",Lo,[n("small",jo,_(s.length)+" / "+_(e.$attrs.maxlength),1)])])):u("v-if",!0)])]),l.showHelp?(r(),d("span",Wo,[w(e.$slots,"help",{},void 0,!0)])):u("v-if",!0)])])}const No=b(Vo,[["render",Ro],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Uo=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"}));const zo={name:"OpenwbToast",emits:["dismiss"],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:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0}},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 o=new Date,c=this.timestamp*1e3-o;for(var l in e)if(Math.abs(c)>e[l]){this.relativeTime=t.format(Math.round(c/e[l]),l);break}}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},U=e=>(A("data-v-c51b5764"),e=e(),q(),e),Fo=U(()=>n("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Go={key:0,class:"time-diff"},Jo=U(()=>n("span",{"aria-hidden":"true"},"×",-1)),Ko=[Jo],Qo={class:"toast-body"};function Yo(e,t,o,c,l,s){return r(),d("div",{class:k(["toast","border-"+o.subtype]),role:"alert"},[n("div",{class:k(["toast-header","bg-"+o.subtype])},[Fo,o.timestamp?(r(),d("small",Go,_(l.relativeTime),1)):u("v-if",!0),n("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},Ko)],2),n("div",Qo,[w(e.$slots,"default",{},void 0,!0)])],2)}const Zo=b(zo,[["render",Yo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Xo=Object.freeze(Object.defineProperty({__proto__:null,default:Zo},Symbol.toStringTag,{value:"Module"}));B.add(Me);const en={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},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)}}},P=e=>(A("data-v-e7a6d0c0"),e=e(),q(),e),tn={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},sn=P(()=>n("a",{class:"navbar-brand",href:"/openWB/web/"},[n("span",null,"openWB")],-1)),on={class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},nn=P(()=>n("span",{class:"navbar-toggler-icon"},null,-1)),an=[nn],ln={class:"collapse navbar-collapse",id:"collapsibleNavbar",ref:"collapsibleNavbar"},rn={class:"navbar-nav"},dn={class:"nav-item"},cn={class:"nav-item dropdown nav-separator-after"},un=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),pn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},mn={class:"nav-item dropdown"},fn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),_n={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},hn={class:"nav-item dropdown"},gn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),bn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vn={class:"nav-item dropdown"},wn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},kn=P(()=>n("div",{class:"dropdown-divider"},null,-1)),Sn=P(()=>n("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),Cn={class:"nav-item dropdown"},Bn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),On={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},$n={key:0,class:"nav-item dropdown nav-separator-before"},Tn=P(()=>n("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Beispiele ",-1)),xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},In={class:"nav-item nav-separator-before"},Vn={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Pn(e,t,o,c,l,s){const a=h("router-link"),i=h("font-awesome-icon");return r(),d("nav",tn,[sn,n("button",on,an,512),n("div",ln,[n("ul",rn,[n("li",dn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),n("li",cn,[un,n("div",pn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),n("li",mn,[fn,n("div",_n,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),n("li",hn,[gn,n("div",bn,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),n("li",vn,[wn,n("div",yn,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),kn,Sn])]),n("li",Cn,[Bn,n("div",On,[m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),s.nodeEnv!=="production"?(r(),d("li",$n,[Tn,n("div",xn,[m(a,{to:"/TestingStore",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" VUEX Store ")]),_:1})])])):u("v-if",!0),n("li",In,[n("a",Vn,[p(" Wiki "),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Hn=b(en,[["render",Pn],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Mn={name:"OpenwbPageFooter"},Dn={id:"footer",class:"footer bg-dark text-light font-small"},An={class:"container text-center"};function qn(e,t,o,c,l,s){return r(),d("footer",Dn,[n("div",An,[n("small",null," Sie befinden sich hier: Einstellungen / "+_(e.$route.meta.heading),1)])])}const En=b(Mn,[["render",qn],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Ln={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jn={class:"mt-3 alert alert-dark text-center"},Wn=n("br",null,null,-1),Rn=n("br",null,null,-1),Nn={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Un=n("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),zn=n("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),Fn={type:"submit",class:"btn btn-primary"};function Gn(e,t,o,c,l,s){const a=h("font-awesome-icon");return r(),d("div",jn,[p(" Open Source made with love!"),Wn,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Rn,n("form",Nn,[Un,zn,n("button",Fn,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jn=b(Ln,[["render",Gn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Kn={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]},mqttClientId(){return this.$root.mqttClientId}},methods:{updateState(e,t,o=void 0){console.debug("updateState:",e,t,o),this.$store.commit({type:"updateTopic",topic:e,objectPath:o,payload:t})},getWildcardIndexList(e,t=!1){let o=e;t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(l=>l.match(o));return c.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let o=e;return t||(o="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(o)).reduce((c,l)=>({...c,[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,o=t,c=1){return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:o})},formatNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,o,c):"-"},formatPhaseArrayNumberTopic(e,t=0,o=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(l=>this.formatNumber(l,t,o,c)).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}}},mounted(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data"),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):Object.keys(this.$store.state.mqtt).includes(e)?console.error("multiple subscriptions of topic!",e):this.$store.commit("addTopic",{topic:e,payload:void 0})}),this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.$root.doUnsubscribe(this.mqttTopicsToSubscribe),this.mqttTopicsToSubscribe.forEach(e=>{e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),this.$store.commit("removeTopic",t)})):this.$store.commit("removeTopic",e)})}},z=b(Kn,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);const Qn={name:"OpenwbPageMessages",mixins:[z],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+","openWB/command/"+this.$root.mqttClientId+"/error"]}},computed:{messages(){const e=[];return this.alertData&&e.push({topic:"openWB/command/"+this.$root.mqttClientId+"/error",source:"command",type:"danger",message:`Bei der Verarbeitung des Befehls '`+this.alertData.command+`' mit den Parametern '`+this.alertData.data+"' ist ein Fehler aufgetreten:
"+this.alertData.error+"
"}),this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e},alertData(){return this.$store.state.mqtt["openWB/command/"+this.$root.mqttClientId+"/error"]},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[o,c]of Object.entries(e))t.push({topic:o,...c});return t}},methods:{clearTopic(e){this.$root.doPublish(e,void 0)},dismissError(){this.clearTopic("openWB/command/"+this.$root.mqttClientId+"/error")},dismiss(e){console.debug("removing message: "+e.topic),this.clearTopic(e.topic)}}},Yn={class:"openwb-toast position-fixed bottom-0 right-0 p-3"},Zn=["innerHTML"];function Xn(e,t,o,c,l,s){const a=h("openwb-base-toast");return r(),d("div",Yn,[(r(!0),d(x,null,M(s.messages,i=>(r(),v(a,{key:i.topic,topic:i.topic,source:i.source,subtype:i.type,timestamp:i.timestamp,onDismiss:s.dismiss},{default:f(()=>[n("span",{innerHTML:i.message},null,8,Zn)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss"]))),128))])}const ea=b(Qn,[["render",Xn],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ta={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)}}},sa={class:"openwb-blocker"},oa={key:0},na={key:1},aa={key:2},ia={key:3};function la(e,t,o,c,l,s){const a=h("openwb-base-modal-dialog");return r(),d("div",sa,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",oa," Der Systemstart ist noch nicht abgeschlossen. ")):u("v-if",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("v-if",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",aa," Bitte die Seite neu laden. ")):(r(),d("p",ia,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const ra=b(ta,[["render",la],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const da={name:"settings-app",components:{NavBar:Hn,PageFooter:En,DonationBanner:Jn,Messages:ea,Blocker:ra},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{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{saveValues(e=void 0){console.debug("saving values...");let t={};e===void 0?t=this.$store.state.mqtt:Array.isArray(e)?e.forEach(o=>{t[o]=this.$store.state.mqtt[o]}):console.error("expected array, got ",typeof e);for(const[o,c]of Object.entries(t)){let l=o.replace("openWB/","openWB/set/");console.debug("saving data:",l,c),this.doPublish(l,c)}},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:o,endpoint:c,...l}=this.connection,s=`${e}://${t}:${o}${c}`;console.debug("connecting to broker:",s);try{this.client=se.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let g;try{g=JSON.parse(i.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),g=i.toString()}this.$store.commit("addTopic",{topic:a,payload:g})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,o=!0,c=2){let l={qos:c,retain:o};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 o=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+o;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(o/1e3)}})}},created(){this.createConnection()}},ca={role:"main",class:"container"},ua={id:"content"};function pa(e,t,o,c,l,s){const a=h("nav-bar"),i=h("router-view"),g=h("donation-banner"),T=h("page-footer"),H=h("messages"),D=h("blocker");return r(),d(x,null,[n("header",null,[m(a)]),n("div",ca,[n("div",ua,[n("h1",null,_(e.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(g)]),m(T),m(H),m(D)],64)}const ma=b(da,[["render",pa],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),fa="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},R={},y=function(t,o,c){if(!o||o.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(o.map(s=>{if(s=_a(s),s in R)return;R[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!c)for(let H=l.length-1;H>=0;H--){const D=l[H];if(D.href===s&&(!a||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const T=document.createElement("link");if(T.rel=a?"stylesheet":fa,a||(T.as="script",T.crossOrigin=""),T.href=s,document.head.appendChild(T),a)return new Promise((H,D)=>{T.addEventListener("load",H),T.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};let F={mqtt:{},local:{reloadRequired:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im Wiki.'}};F.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,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",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 G=oe({state:F,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const o=(c,l,s)=>l.split(".").reduce((a,i,g)=>a[i]=l.split(".").length===++g?s:a[i]||{},c);t.topic in e.mqtt?t.objectPath!=null?o(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?o(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"))}},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 o,c;o=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(o),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})}}}),J=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-60e959e3.js"),["assets/Status-60e959e3.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Status-49744ef3.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-44e297bd.js"),["assets/ChargeLog-44e297bd.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargeLog-eab2275c.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-19a8a4c0.js"),["assets/Chart-19a8a4c0.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-chartjs-93103a11.js","assets/vendor-luxon-1af9332f.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-6f942583.js"),["assets/GeneralConfig-6f942583.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-560c0e0a.js"),["assets/OptionalComponents-560c0e0a.js","assets/dynamic-import-helper-be004503.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-d9fc3d91.js"),["assets/GeneralChargeConfig-d9fc3d91.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-81ae89da.js"),["assets/InstantChargeConfig-81ae89da.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-42aae27d.js"),["assets/PVChargeConfig-42aae27d.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-551a0160.js"),["assets/TimeChargeConfig-551a0160.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-1687d025.js"),["assets/ScheduledChargeConfig-1687d025.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-33a40424.js"),["assets/HardwareInstallation-33a40424.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-0263daa7.js"),["assets/LoadManagementConfig-0263daa7.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/OpenwbSortableList-ac8ac331.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-e9afcc08.js"),["assets/ChargePointInstallation-e9afcc08.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-939fd0ba.js"),["assets/VehicleConfig-939fd0ba.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-e2087842.js"),["assets/CloudConfig-e2087842.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-f4b2ee1b.js"),["assets/MqttBridgeConfig-f4b2ee1b.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-4d789b8a.js"),["assets/DebugConfig-4d789b8a.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-0be69787.js"),["assets/Support-0be69787.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-67cbbf35.js"),["assets/LegalSettings-67cbbf35.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-62b8e5ff.js"),["assets/System-62b8e5ff.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-44334b0c.js"),["assets/DataManagement-44334b0c.js","assets/vendor-fortawesome-838df0c9.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])}];J.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-1f8762e3.js"),["assets/TestingStore-1f8762e3.js","assets/OpenwbSortableList-ac8ac331.js","assets/vendor-20bb207d.js","assets/vendor-sortablejs-ad1d2cc8.js","assets/vendor-7b9e30aa.css","assets/vendor-fortawesome-838df0c9.js","assets/OpenwbSortableList-15b0be17.css","assets/vendor-bootstrap-d275de6c.js","assets/vendor-jquery-89b63fca.js","assets/vendor-bootstrap-e99e333f.css","assets/vendor-axios-13ef03ae.js"])});const L=ne({history:ae(),routes:J});L.beforeEach(async e=>{if(e.name!=="LegalSettings"&&!await G.getters.usageTermsAcknowledged)return{name:"LegalSettings"}});L.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const j=ie(ma);j.use(G).use(L).use(Ae,qe);const ha=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":it,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Ct,"./components/OpenwbBaseCard.vue":Dt,"./components/OpenwbBaseCheckboxInput.vue":Nt,"./components/OpenwbBaseClickButton.vue":Gt,"./components/OpenwbBaseCopyToClipboard.vue":Zt,"./components/OpenwbBaseHeading.vue":is,"./components/OpenwbBaseModalDialog.vue":hs,"./components/OpenwbBaseNumberInput.vue":xs,"./components/OpenwbBaseRangeInput.vue":Ws,"./components/OpenwbBaseSelectInput.vue":Xs,"./components/OpenwbBaseSubmitButtons.vue":lo,"./components/OpenwbBaseTextInput.vue":Io,"./components/OpenwbBaseTextarea.vue":Uo,"./components/OpenwbBaseToast.vue":Xo});Object.entries(ha).forEach(([e,t])=>{const o=le(re(e.split("/").pop().replace(/\.\w+$/,"")));j.component(o,t.default)});j.mount("#app");export{z as C,y as _}; diff --git a/web/settings/assets/vehicle-e7320818.js b/web/settings/assets/vehicle-1c4a57cd.js similarity index 97% rename from web/settings/assets/vehicle-e7320818.js rename to web/settings/assets/vehicle-1c4a57cd.js index 3a8fe77ca5..e5c4080abb 100644 --- a/web/settings/assets/vehicle-e7320818.js +++ b/web/settings/assets/vehicle-1c4a57cd.js @@ -1 +1 @@ -import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-20bb207d.js";import{a as y}from"./vendor-axios-13ef03ae.js";import{C}from"./index-f08a7306.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; +import{_ as f,a4 as g,a5 as h,a6 as b,p as l,k,l as w,A as a,L as i,u as s,q as m,x as v}from"./vendor-20bb207d.js";import{a as y}from"./vendor-axios-13ef03ae.js";import{C}from"./index-2a1b0c80.js";import"./vendor-sortablejs-ad1d2cc8.js";import"./vendor-fortawesome-838df0c9.js";import"./vendor-bootstrap-d275de6c.js";import"./vendor-jquery-89b63fca.js";const T={name:"VehicleSocTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{required:!0}},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:""}},mixins:[C],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},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=g.encode(h.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=h.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=g.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=b.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 t=await y.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",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!
"+t+"
","danger")}}}},x={class:"vehicle-soc-tesla"},U={class:"small"},B=m("hr",null,null,-1);function z(e,n,t,V,u,r){const _=l("openwb-base-heading"),d=l("openwb-base-number-input"),p=l("openwb-base-button-input"),c=l("openwb-base-text-input");return k(),w("div",x,[a(_,null,{default:i(()=>[s(" Einstellungen für Tesla SoC "),m("span",U,"(Modul: "+v(e.$options.name)+")",1)]),_:1}),a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>r.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:i(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(_,null,{default:i(()=>[s("Token abrufen oder eingeben")]),_:1}),a(p,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:r.tesla_login_window},{help:i(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren",subtype:"url",emptyValue:"",modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:i(()=>[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"]),a(p,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url.length==0,onButtonClicked:r.tesla_login},{help:i(()=>[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"]),B,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>r.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.configuration.token?t.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>r.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.configuration.token?t.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>r.updateConfiguration(o,"configuration.token.created_at"))},{help:i(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.configuration.token?t.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>r.updateConfiguration(o,"configuration.token.expires_in"))},{help:i(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=f(T,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default}; diff --git a/web/settings/index.html b/web/settings/index.html index b31f4737cf..6d657d7b79 100644 --- a/web/settings/index.html +++ b/web/settings/index.html @@ -7,7 +7,7 @@ openWB - + From ccaa35bd1851069f66dce5089704c7a4f6a90f3c Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Wed, 20 Sep 2023 12:23:46 +0200 Subject: [PATCH 111/121] fix smartme factor (#2790) * fix smartme factor * typo * typo --- packages/modules/devices/smart_me/counter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/modules/devices/smart_me/counter.py b/packages/modules/devices/smart_me/counter.py index 3e83224e4f..d83f3012cc 100644 --- a/packages/modules/devices/smart_me/counter.py +++ b/packages/modules/devices/smart_me/counter.py @@ -23,7 +23,7 @@ def __init__(self, def update(self, session: Session) -> None: def parse_phase_values(key: str) -> List[float]: - return [response[key+str(i)] * 1000 for i in range(1, 4)] + return [response[key+str(i)] for i in range(1, 4)] response = session.get('https://smart-me.com:443/api/Devices/' + self.component_config.configuration.id, timeout=3).json() @@ -33,6 +33,7 @@ def parse_phase_values(key: str) -> List[float]: currents[0] = response["Current"] powers = parse_phase_values("ActivePowerL") + powers = [powers[i] * 1000 for i in range(0, 3)] if powers[0] == 0: powers[0] = response["ActivePower"] From 5b4142889894d30f77f9d9339f24c2e6526f508e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 20 Sep 2023 13:53:01 +0200 Subject: [PATCH 112/121] fix soc interval config --- packages/modules/common/configurable_vehicle.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/modules/common/configurable_vehicle.py b/packages/modules/common/configurable_vehicle.py index 772adc9f71..636dd2470e 100644 --- a/packages/modules/common/configurable_vehicle.py +++ b/packages/modules/common/configurable_vehicle.py @@ -1,4 +1,4 @@ -from typing import TypeVar, Generic, Callable +from typing import Optional, TypeVar, Generic, Callable from modules.common import store from modules.common.abstract_soc import SocUpdateData @@ -24,10 +24,13 @@ def __init__(self, vehicle_config: T_VEHICLE_CONFIG, component_updater: Callable[[T_VEHICLE_CONFIG, SocUpdateData], CarState], vehicle: int, - interval_config: IntervalConfig = IntervalConfig()) -> None: + interval_config: Optional[IntervalConfig] = None) -> None: self.__component_updater = component_updater self.vehicle_config = vehicle_config - self.interval_config = interval_config + if interval_config is None: + self.interval_config = IntervalConfig() + else: + self.interval_config = interval_config self.vehicle = vehicle self.store = store.get_car_value_store(self.vehicle) self.component_info = ComponentInfo(self.vehicle, self.vehicle_config.name, "vehicle") From d2c3d560d03eb389ff4d66093bf0b5d2975a7249 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 22 Sep 2023 12:16:47 +0200 Subject: [PATCH 113/121] fix solarwatt --- packages/modules/devices/solar_watt/device.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/solar_watt/device.py b/packages/modules/devices/solar_watt/device.py index ef6efe9755..85d9306406 100644 --- a/packages/modules/devices/solar_watt/device.py +++ b/packages/modules/devices/solar_watt/device.py @@ -30,7 +30,7 @@ def request(url: str) -> Dict: energy_manager_response = request('http://'+ip_adress + '/rest/kiwigrid/wizard/devices') else: gateway_response = request('http://'+ip_adress+':8080/') - for component in components.values(): + for component in components: if isinstance(component, SolarWattInverter): if energy_manager_response is None: energy_manager_response = request('http://'+ip_adress + '/rest/kiwigrid/wizard/devices') From 2b0c6f2a18857c8153fd1dc30fcfc6990fd6ab20 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 25 Sep 2023 09:19:44 +0200 Subject: [PATCH 114/121] fix parent_cp --- packages/helpermodules/command.py | 9 ++++++++- packages/helpermodules/setdata.py | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 505adc4adf..2f715bc7d4 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -18,7 +18,7 @@ from helpermodules.measurement_logging.process_log import get_daily_log, get_monthly_log, get_yearly_log from helpermodules.messaging import MessageType, pub_user_message, pub_error_global from helpermodules.parse_send_debug import parse_send_debug_data -from helpermodules.pub import Pub +from helpermodules.pub import Pub, pub_single from helpermodules.subdata import SubData from helpermodules.utils.topic_parser import decode_payload from control import bat, bridge, chargelog, data, ev, counter, counter_all, pv @@ -794,6 +794,13 @@ def __on_message_rm(self, client, userdata, msg): topic = type_to_topic_mapping(payload["type"]) data.data.counter_all_data.hierarchy_remove_item(payload["id"]) client.subscribe(f'openWB/{topic}/{payload["id"]}/#', 2) + elif "openWB/chargepoint/" in msg.topic and "/config" in msg.topic: + payload = decode_payload(msg.payload) + if payload["type"] == "external_openwb": + pub_single( + f'openWB/set/internal_chargepoint/{payload["configuration"]["duo_num"]}/data/parent_cp', + None, + hostname=payload["configuration"]["ip_address"]) def __on_message_max_id(self, client, userdata, msg): self.received_topics.append(msg.topic) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 3e656ccee5..4f10008330 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -1022,7 +1022,10 @@ def process_internal_chargepoint_topic(self, msg): if "data/cp_interruption_duration" in msg.topic: self._validate_value(msg, int, [(0, float("inf"))]) elif "data/parent_cp" in msg.topic: - self._validate_value(msg, str) + for cp in subdata.SubData.cp_data.values(): + if cp.chargepoint.data.config.type == "internal_openwb": + if get_index(msg.topic) == cp.chargepoint.data.config.configuration.duo_num: + self._validate_value(msg, str) elif "data/set_current" in msg.topic: self._validate_value(msg, float, [(0, 0), (6, 32)]) elif "data/phases_to_use" in msg.topic: From 0097a1d074dde0727df757da1e568f8961c37f0d Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 25 Sep 2023 09:31:10 +0200 Subject: [PATCH 115/121] fix --- packages/helpermodules/command.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py index 2f715bc7d4..e39ac1dbbc 100644 --- a/packages/helpermodules/command.py +++ b/packages/helpermodules/command.py @@ -794,7 +794,7 @@ def __on_message_rm(self, client, userdata, msg): topic = type_to_topic_mapping(payload["type"]) data.data.counter_all_data.hierarchy_remove_item(payload["id"]) client.subscribe(f'openWB/{topic}/{payload["id"]}/#', 2) - elif "openWB/chargepoint/" in msg.topic and "/config" in msg.topic: + elif re.search("openWB/chargepoint/[0-9]+/config$", msg.topic) is not None: payload = decode_payload(msg.payload) if payload["type"] == "external_openwb": pub_single( From 3e7eb7934044f1b89354a3fc48a99b1bc255d501 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 25 Sep 2023 10:23:30 +0200 Subject: [PATCH 116/121] fix --- packages/helpermodules/setdata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 4f10008330..49764fcb45 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -1024,7 +1024,7 @@ def process_internal_chargepoint_topic(self, msg): elif "data/parent_cp" in msg.topic: for cp in subdata.SubData.cp_data.values(): if cp.chargepoint.data.config.type == "internal_openwb": - if get_index(msg.topic) == cp.chargepoint.data.config.configuration.duo_num: + if int(get_index(msg.topic)) == cp.chargepoint.data.config.configuration["duo_num"]: self._validate_value(msg, str) elif "data/set_current" in msg.topic: self._validate_value(msg, float, [(0, 0), (6, 32)]) From d55d13bcb59f910f5b55c84d3206f71fd9c75525 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 25 Sep 2023 12:34:37 +0200 Subject: [PATCH 117/121] fix obsolet parent_cp --- packages/helpermodules/setdata.py | 14 ++++++++++---- packages/helpermodules/update_config.py | 20 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 49764fcb45..d24c97e63b 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -1022,10 +1022,16 @@ def process_internal_chargepoint_topic(self, msg): if "data/cp_interruption_duration" in msg.topic: self._validate_value(msg, int, [(0, float("inf"))]) elif "data/parent_cp" in msg.topic: - for cp in subdata.SubData.cp_data.values(): - if cp.chargepoint.data.config.type == "internal_openwb": - if int(get_index(msg.topic)) == cp.chargepoint.data.config.configuration["duo_num"]: - self._validate_value(msg, str) + if decode_payload(msg.payload) is None: + self._validate_value(msg, str) + else: + for cp in subdata.SubData.cp_data.values(): + if cp.chargepoint.data.config.type == "internal_openwb": + if int(get_index(msg.topic)) == cp.chargepoint.data.config.configuration["duo_num"]: + self._validate_value(msg, str) + break + else: + log.error("Kein interner Ladepunkt konfiguriert, dem ein parent_cp zugeordnet werden kann.") elif "data/set_current" in msg.topic: self._validate_value(msg, float, [(0, 0), (6, 32)]) elif "data/phases_to_use" in msg.topic: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 9964461a72..ea60bfd4fd 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -26,7 +26,7 @@ class UpdateConfig: - DATASTORE_VERSION = 19 + DATASTORE_VERSION = 20 valid_topic = [ "^openWB/bat/config/configured$", "^openWB/bat/set/charging_power_left$", @@ -404,6 +404,8 @@ class UpdateConfig: ("openWB/general/range_unit", "km"), ("openWB/general/ripple_control_receiver/configured", False), ("openWB/graph/config/duration", 120), + ("openWB/internal_chargepoint/0/data/parent_cp", None), + ("openWB/internal_chargepoint/1/data/parent_cp", None), ("openWB/optional/et/active", False), ("openWB/optional/et/config/max_price", 0), ("openWB/optional/et/config/provider", {}), @@ -496,7 +498,7 @@ def __pub_missing_defaults(self): # zwingend erforderliche Standardwerte setzen for topic, default_payload in self.default_topic: if topic not in self.all_received_topics.keys(): - log.debug(f"Setzte Topic '{topic}' auf Standardwert '{str(default_payload)}'") + log.debug(f"Setze Topic '{topic}' auf Standardwert '{str(default_payload)}'") Pub().pub(topic.replace("openWB/", "openWB/set/"), default_payload) def __update_version(self): @@ -840,3 +842,17 @@ def convert_file(file): convert_file(f"/var/www/html/openWB/data/daily_log/{timecheck.create_timestamp_YYYYMMDD()}.json") convert_file(f"/var/www/html/openWB/data/monthly_log/{timecheck.create_timestamp_YYYYMM()}.json") Pub().pub("openWB/system/datastore_version", 19) + + def upgrade_datastore_19(self) -> None: + for topic, payload in self.all_received_topics.items(): + if re.search("openWB/internal_chargepoint/[0-1]/data/parent_cp", topic) is not None: + payload = decode_payload(payload) + for topic_cp, payload_cp in self.all_received_topics.items(): + payload_cp = decode_payload(payload_cp) + if f"openWB/chargepoint/{payload}/config" == topic_cp: + if payload_cp["type"] == "internal_openwb": + if int(get_index(topic)) == payload_cp["configuration"]["duo_num"]: + break + else: + Pub().pub(topic, None) + Pub().pub("openWB/system/datastore_version", 20) From b461fa6ecb5df2ff020941a914d7ca70e03ad356 Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Mon, 25 Sep 2023 13:05:37 +0200 Subject: [PATCH 118/121] redirect instead of iframe --- web/display/index.html | 2 +- web/display/processAllMqttMsg.js | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/web/display/index.html b/web/display/index.html index 75d218e57a..9b684faf54 100644 --- a/web/display/index.html +++ b/web/display/index.html @@ -13,7 +13,7 @@ // load mqtt library 'js/mqttws31.js', // functions for processing messages - 'display/processAllMqttMsg.js?ver=20230825', + 'display/processAllMqttMsg.js?ver=20230925', // functions performing mqtt and start mqtt-service 'display/setupMqttServices.js?ver=20230825', ]; diff --git a/web/display/processAllMqttMsg.js b/web/display/processAllMqttMsg.js index 2295ff38a5..5304b2330a 100644 --- a/web/display/processAllMqttMsg.js +++ b/web/display/processAllMqttMsg.js @@ -56,11 +56,12 @@ function setIframeSource() { destination = `${location.protocol}//${host}/openWB/web/display/?${query.toString()}`; if (destination != iframe.src) { addLog(`all done, loading theme from primary`); - iframe.src = destination; + // iframe.src = destination; } setTimeout(() => { - startup.classList.add("hide"); - iframe.classList.remove("hide"); + // startup.classList.add("hide"); + // iframe.classList.remove("hide"); + location.href = destination; }, 2000); } else { host = location.host; From c6080b75c7cfb7baf59a5a2d29b65d7414f86892 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 25 Sep 2023 14:31:45 +0200 Subject: [PATCH 119/121] fix socket migration --- packages/helpermodules/data_migration/data_migration.py | 2 +- packages/helpermodules/update_config.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py index f67dd775f3..8a2c6370f0 100644 --- a/packages/helpermodules/data_migration/data_migration.py +++ b/packages/helpermodules/data_migration/data_migration.py @@ -565,7 +565,7 @@ def _move_rse(self) -> None: update_hardware_configuration({"ripple_control_receiver_configured": rse}) def _move_max_c_socket(self): - max_c_socket = self._get_openwb_conf_value("ppbuchse") + max_c_socket = int(self._get_openwb_conf_value("ppbuchse")) if max_c_socket is None: log.debug("Keine max_c_socket-Konfiguration gefunden. Setze auf False.") max_c_socket = 32 diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index ea60bfd4fd..ff2b8b7247 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -13,6 +13,7 @@ from control.chargepoint.chargepoint_template import get_chargepoint_template_default from helpermodules import timecheck from helpermodules.broker import InternalBrokerClient +from helpermodules.hardware_configuration import get_hardware_configuration_setting, update_hardware_configuration from helpermodules.measurement_logging.process_log import get_totals from helpermodules.measurement_logging.write_log import get_names from helpermodules.pub import Pub @@ -26,7 +27,7 @@ class UpdateConfig: - DATASTORE_VERSION = 20 + DATASTORE_VERSION = 21 valid_topic = [ "^openWB/bat/config/configured$", "^openWB/bat/set/charging_power_left$", @@ -856,3 +857,9 @@ def upgrade_datastore_19(self) -> None: else: Pub().pub(topic, None) Pub().pub("openWB/system/datastore_version", 20) + + def upgrade_datastore_20(self) -> None: + max_c_socket = get_hardware_configuration_setting("max_c_socket") + if isinstance(max_c_socket, str): + update_hardware_configuration({"max_c_socket": int(max_c_socket)}) + Pub().pub("openWB/system/datastore_version", 21) From ce00a8f7b74dbb8b0a8bf816a2b24851326c8b2a Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:41:51 +0200 Subject: [PATCH 120/121] Update version 2.1.1-Beta.3 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index b1fbde3ac3..5e187ac26d 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.1-Beta.2 +2.1.1-Beta.3 From b7ac399d044861766007aa5bc49e71020b3e5f99 Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:10:55 +0200 Subject: [PATCH 121/121] Update version 2.1.1 --- web/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/version b/web/version index 5e187ac26d..3e3c2f1e5e 100644 --- a/web/version +++ b/web/version @@ -1 +1 @@ -2.1.1-Beta.3 +2.1.1